Как вы ссылаетесь на растровое изображение в ActionScript? - PullRequest
3 голосов
/ 04 сентября 2008

Как вы можете ссылаться на растровое изображение на сцене во флэш-памяти, используя ActionScript 3?

У меня есть растровое изображение на сцене во флэш-памяти, и в конце фильма я хотел бы поменять его на следующую последовательность перед тем, как фильм зациклится. в моей библиотеке 3 изображения, экспортированные для actioncript, с именем класса img1 / img2 / img3. вот как уложены мои слои во флэш-памяти.

layer 5 : mask2:MovieClip
layer 4 : img2:Bitmap
layer 3 : mask1:MovieClip
layer 2 : img1:Bitmap
layer 1 : background:Bitmap

в конце фильма я хотел бы поменять img1 с img2, чтобы фильм плавно зацикливался, затем в идеале поменяйте местами img2 (на слое 4) с img3 и так далее, пока я не доберусь до конца своих изображений.

но я не могу узнать, как ссылаться на изображения, которые уже были поставлены на сцену (во время разработки), у кого-нибудь есть идеи, как это сделать?

В конце фильма, мы надеемся, будут динамически загружаться изображения с веб-сервера (у меня есть код для этого бита) и отображать их, а также img1 / img2 / img3.

Любая помощь будет оценена.

EDIT:

@ 81bronco , я пробовал это, но имя экземпляра затенено для графики, это позволит мне делать это только с мувиклипами и кнопками. Я наполовину заставил его работать, превратив их в Moveclips и очистив изображения в Moveclip перед добавлением нового (используя что-то более простое, чем то, что предложено vanhornRF ), но по какой-то странной причине, когда маска пинает в изображениях, которые я очистил, возвращайтесь для анимации маски.

Ответы [ 4 ]

3 голосов
/ 04 сентября 2008

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

Нажмите на предмет на сцене и посмотрите на панель свойств. Над полями для ввода размеров элемента должно быть текстовое поле ввода. Введите имя там.

В другом месте кода вы можете ссылаться на этот элемент на сцене по его имени экземпляра.

1 голос
/ 04 сентября 2008

Это должно быть примерно так:

imageHolder.removeChild( imageIndex )

или

imageHolder.removeChildByName( imageName )

и после этого

imageHolder.addChild( newImage )
0 голосов
/ 04 сентября 2008

Привет, Re0sless, когда вы удаляете эти элементы со сцены, к ним присоединяются слушатели событий, таймеры или загрузчики? Любая из этих вещей может заставить объект оставаться в памяти флэш-памяти и не удаляться должным образом. Кроме того, просто удалив элемент, возможно, попытаться обнулить его? Иногда это помогает очистить ссылки, чтобы их можно было правильно уничтожить.

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

0 голосов
/ 04 сентября 2008

Я бы, вероятно, сделал что-то подобное в вашем классе документов

for(var i:int=0; i<numChildren; i++){
    trace(getChildAt(i),"This is the child at position "+i);
}

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

Теперь, когда у вас есть дочерние элементы и по какому индексу они на самом деле находятся на этапе, вы можете ссылаться на них, вызывая getChildAt (int), вы можете удалитьChildAt (int), вы можете добавитьChildAt (displayObject, int) и swapChildrenAt ( int, int). Значение int в этих аргументах будет представлять позицию индекса, которая была возвращена вашим оператором трассировки, а displayObject, очевидно, будет просто представлять все, что вы хотите добавить к сцене или родительскому DisplayObject.

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

@ 81bronco Определенно следует назвать свои активы на сцене, если вы хотите, чтобы они однозначно ссылались на них конкретно, чтобы избежать путаницы, если на стадии окажется много предметов

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