делает actionscript addChild, требуют экранного объекта сначала

Решение:

если у Вас есть та же проблема, 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.

6
задан touB 19 March 2010 в 17:07
поделиться

5 ответов

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

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

1
ответ дан 11 December 2019 в 23:53
поделиться

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

0
ответ дан 11 December 2019 в 23:53
поделиться

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

2
ответ дан 11 December 2019 в 23:53
поделиться

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

.
0
ответ дан 11 December 2019 в 23:53
поделиться

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

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

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

0
ответ дан 11 December 2019 в 23:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: