AS3 добавляет рамку к экранному объекту

Я знаю, как нарисовать прямоугольник и добавить его в DisplayObjectContainer, но видите ли вы более простой способ напрямую добавить границу к DisplayObject?

DisplayObject, похоже, не имеет addChild (), поэтому мне пришлось бы добавить его в родительский элемент, что, на мой взгляд, не идеально ...


person Jimy    schedule 29.06.2011    source источник


Ответы (3)


Я думаю, что если вы вынуждены использовать DisplayObject, а не DisplayObjectContainer, тогда у вас нет другого выбора, кроме как так или иначе написать границу родительскому объекту. Согласны, однако, это не лучший способ делать что-то, и я думаю, что, если это возможно, лучшим подходом было бы не использовать DisplayObject.

Изменить: как вы создаете это как DisplayObject? Вы не можете напрямую создать экземпляр displayObject, так что это расширение DisplayObject или возвращаемое значение чего-то?

person shanethehat    schedule 29.06.2011
comment
Я создал внешний swf, который связал с Haxe. Так что это MovieClip, содержащий MovieClips и Bitmap ... Может, мне где-нибудь нужен актерский состав ... - person Jimy; 29.06.2011
comment
После проверки это должен быть MovieClip. Мне просто нужно найти способ его разыграть. Спасибо. - person Jimy; 29.06.2011
comment
Попробуйте MovieClip(myDisplayObject).doWhateverYouWant() - person shanethehat; 29.06.2011

Я бы создал прозрачную форму заливки и добавил ее в DisplayObject следующим образом:

Редактировать: рисование непосредственно в DisplayObject.

this.graphics.lineStyle(1, 0x000000);
this.graphics.beginFill(0x000000, 0);
this.graphics.drawRect(0, 0, 50, 50);
this.graphics.endFill();
person citizen conn    schedule 29.06.2011
comment
Да, это то, что я хотел сделать, но мой объект - DisplayObject, поэтому нет addChild (). Только DisplayObjectContainer имеет это: / - person Jimy; 29.06.2011
comment
для DisplayObject нет графического объекта: справка. adobe.com/en_US/FlashPlatform/reference/actionscript/3/ - person shanethehat; 29.06.2011
comment
Графика находится в Sprite, поэтому недоступна. - person Jimy; 29.06.2011

простой способ добавить к чему-либо границу - использовать фильтр свечения:

var _objectToBorder:Sprite = new Sprite();
// draw something or add something in the _objectToBorder
var glowFilter:GlowFilter = new GlowFilter(0x000000, 1, 6, 6, 20, 1);
_objectToBorder.filters = [glowFilter];

Вы можете поиграть с этой онлайн-демонстрацией. Щелкните зеленый кружок, чтобы переключить границу свечения.

Имейте в виду, что использование фильтров может ухудшить производительность, если они используются для тонны элементов.

person gltovar    schedule 29.06.2011