Могут ли объекты содержать мувиклипы во Flash ActionScript 3? - PullRequest
1 голос
/ 29 апреля 2011

У меня есть массив, который содержит кучу объектов.Эти объекты имеют множество различных свойств.Но одной вещью, которую я хочу, чтобы каждый объект содержал, является мувиклип, но у меня возникают проблемы с вставкой мувиклипа в объект.В основном то, что у меня есть это (очень упрощенно):

var groupArray:Array = new Array();

for (var i=0;i<numGroups;i++){
var groupObject:Object = new Object();
groupArray.push(groupObject)
}

и что я хочу сделать, это (позже в коде):

var groupClip:MovieClip = new MovieClip();
groupArray[i].addChild(groupClip)

Но это не работает,Как сделать мувиклип частью объекта?

Ответы [ 3 ]

2 голосов
/ 29 апреля 2011

Если я правильно понимаю ваш вопрос, то вот что вы делаете:

var array:Array = new Array();
var length:int = 5;

for (var i:uint = 0; i < length; i++)
{
    var object:Object = new Object();
    array.push(object);

}// end for

var movieClip:MovieClip = new MovieClip();
array[0].movieClip = movieClip;

trace(array[0].movieClip)// output: [object MovieClip];

предыдущий совпадает со следующим (за исключением одного элемента в массиве вместо пяти):

var array:Array = new Array();

var object:Object = new Object;
var movieClip:MovieClip = new MovieClip();

object.movieClip = movieClip; // or object["movieClip"] = movieClip;

array.push(object);

trace(array[0].movieClip)// output: [object MovieClip];
1 голос
/ 29 апреля 2011

addChild существует только для классов, которые наследуются от DisplayObjectContainer, а Object - нет.

Примеры классов, наследуемых от DisplayObjectContainer: Sprite и MovieClip.

Подробнее об этом можно прочитать здесь: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObjectContainer.html#addChild()

0 голосов
/ 29 апреля 2011

Объекты могут содержать что угодно.Вы можете динамически создавать или получать доступ к любому свойству, существующему или нет, объекта во время выполнения.Ваша первая проблема заключается в том, что Object не имеет функции «push».Чтобы назначить что-либо для объекта, вы делаете это с помощью нотации ключ / значение.

object["foo"] = new MovieClip();
trace(object.foo);
trace(object["foo"]);

РЕДАКТИРОВАТЬ: либо мое предыдущее чтение было отключено, либо вы отредактировали образец, чтобы он больше не применялся ... Но похоже, вы хотите, чтобы groupObject был массивомтак как вы используете переменную i, чтобы попытаться сослаться на клип ... так почему бы не сделать его массивом?Таким образом, вы можете использовать функцию push, и все будет численно проиндексировано, как будто вы ожидаете, что оно все равно будет.

Сложно быть уверенным, но, похоже, вы получитеЛогическая ошибка в последней строке вашего кода.Где находится эта переменная?Кроме того, похоже, что вы пытаетесь вызвать addChild для объекта, а не для видеоклипа, который, как вы думаете, вы храните ... это не сработает, потому что объект не имеет функции addChild.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...