Решение:
если у Вас есть та же проблема, addElement () вместо addChild () то, что сделало это
Я пытаюсь переехать от mxml до actionsctipt. У меня есть a <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: Неявное приведение значения типа вспыхивает primitives:Rect к несвязанной флэш-памяти 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.
Это связано с тем, что Flex 4 значительно изменил способ работы иерархии отображения в приложениях на основе MXML. Это немного сбивает с толку, поскольку addChild () больше не работает так просто, как вам хотелось бы - вам нужно добавить элементы в поставщик данных, а затем логику отображения этих элементов (какие, где добавить, как их скинуть) и т. д.) обрабатывается в другом месте. Тем не менее, это своего рода полезное изменение, потому что оно заставляет вас четко разделять свои проблемы. После того, как вы добавили все элементы в ваш dataProvider, вы можете менять местами объекты Layout по желанию (даже во время выполнения), чтобы изменить внешний вид вашего приложения.
РЕДАКТИРОВАТЬ: Технически они изменили не сам displayList. Дело в том, что основной единицей, используемой Flex, теперь является «Группа» - даже s: Application extends group. Вы добавляете свой контент в группу (или в приложение верхнего уровня), а затем назначаете группе макет, чтобы сообщить ей, как отображать добавленные вами элементы.
Согласно действующей документации, метод addChild класса Application требует, чтобы он был displayObject.
попытался изменить addChild (aRect);
на addElement (aRect);
, и это прекрасно сработало.
Да, вам нужен DisplayObject. Я не знаком с spark.primitives.Rect, но, возможно, вы можете просто создать новый спрайт и вызвать методы его объекта Graphics, чтобы нарисовать прямоугольник?
.К сожалению, у нас часто возникают проблемы с добавлением флэш-ресурсов (swf swc) (экранных объектов) с помощью addElement.
Я работаю над тем, как это сделать прямо сейчас :( больше обручей и прыжков
Также мой swc не отображается в проводнике пакетов (почему бы и нет?)