требуется ли для ActionScript addChild сначала экранный объект - PullRequest
6 голосов
/ 19 марта 2010

Решение:

если у вас такая же проблема, addElement () вместо addChild () - это то, что он сделал


Я пытаюсь перейти от mxml к actionsctipt.У меня есть <s:Rect>, который я создал и установил его свойства, но не могу добавить его.

var aRect:Rect = new Rect();
//set properties like aRect.x, aRect.y, aRect.width, aRect.height

//tried adding it various ways
addChild(aRect);
Application.addChild(aRect);
Application.application.addChild(aRect);
stage.addChild(aRect);

Но я продолжаю получать сообщение об ошибке 1067: неявное приведение значения типа spark.primitives: прямо к несвязанному типу flash.display: DisplayObject

Первоначально в mxml он был прямо внутри <s:Application>, а не внутри чего-либо

<s:Application>

    <s:Rect id="aRect" x="10" y="10" width="15%" height="15%">
         //then fill code here, removed for readability
    </s:Rect>

</s:Application>

В чем дело, я думал, что ActionScript будет лучше, чем mxml.

Ответы [ 5 ]

2 голосов
/ 19 марта 2010

попытался изменить addChild(aRect); на addElement(aRect);, и это прекрасно сработало.

1 голос
/ 19 марта 2010

Это связано с тем, что Flex 4 значительно изменил работу иерархии отображения в приложениях на основе MXML. Это немного сбивает с толку, так как addChild () больше не работает так просто, как вам бы того хотелось - вы должны добавить элементы к провайдеру данных, а затем логику отображения этих элементов (какие из них добавить куда, как их оформить и т. д.) обрабатывается в другом месте. Это своего рода полезное изменение, потому что оно вынуждает вас разделить ваши проблемы очень конкретным образом. Как только все ваши элементы будут добавлены в ваш dataProvider, вы можете поменять объекты Layout по желанию (даже во время выполнения), чтобы изменить внешний вид вашего приложения.

РЕДАКТИРОВАТЬ: Технически они изменили не сам displayList. Дело в том, что основным модулем, используемым Flex, теперь является «группа» - даже s: приложение расширяет группу. Вы добавляете свой контент в группу (или в приложение верхнего уровня), а затем назначаете группе макет, чтобы указать, как отображать добавленные вами элементы.

0 голосов
/ 12 мая 2010

Досадно, что нам часто приходится добавлять флэш-ресурсы (swf swc) (экранные объекты) с помощью addElement.

Я сейчас работаю над тем, чтобы сделать это :( больше прыжков и прыжков

Также мой SWC не отображается в проводнике пакетов (почему бы и нет?)

0 голосов
/ 19 марта 2010

Согласно действующим документам, метод addChild класса Application требует, чтобы он был displayObject.

0 голосов
/ 19 марта 2010

Да, вам нужен DisplayObject. Я не знаком с spark.primitives.Rect, но, возможно, вы могли бы просто создать новый Sprite и вызвать методы для его объекта Graphics, чтобы нарисовать прямоугольник?

...