Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Подгруженные из XML вращающиеся иконки,как прицепить на них маску? (http://www.flasher.ru/forum/showthread.php?t=119048)

Ragamuffin 10.12.2008 21:52

Подгруженные из XML вращающиеся иконки,как прицепить на них маску?
 
Доброй ночи:)

Я пытаюсь сделать что-то вроде меню - карусель.
В него подгружаются иконки из XML файла, которые должны летать по орбите вокруг центральной.. колонны)). Они реагируют на курсор и вращаются обратно пропорционально его отдалению от центра.

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

Вот код который генерит иконки и применяет к ним все функции.


Код:


xml.onLoad = function()
{

var nodes = this.firstChild.childNodes;
numOfItems = nodes.length;

for(var i=0;i<numOfItems;i++)
{

var t = home.attachMovie("item","item"+i,i+1);

t.angle = i * ((Math.PI*2)/numOfItems);
t.onEnterFrame = mover;
t.toolText = nodes[i].attributes.tooltip;
t.content = nodes[i].attributes.content;

t.imagp = nodes[i].attributes.img;

t.icon.inner.loadMovie(nodes[i].attributes.image)
t.r.inner.loadMovie(nodes[i].attributes.image);
t.icon.onRollOver = t.setMask(swapper),over;
t.icon.onRollOut = out;
t.icon.onRelease = released;
//t.setMask(swapper);


}
}

Сверху серым команда которую я внес чтобы маска применялась, и она применяться в точности как надо, Но только для Одной иконки. Явно первой.

Подскажите пожалуйста, как изменить код чтобы маска применялась для всех созданных иконок.

И возможно как бонус, подскажите как соединить функции такого кода с кнопкой поставленной на сцене, чтобы не прерывался цикл вращения. при моих попытках он останавливается. в коде сверху это функция "mover".

За ранее спасибо
:rolleyes:

DarkLight 10.12.2008 21:55

Один клип не может служить маской для >1 клипа одновременно. Чтобы применить к нескольким объектам один клип-маску, надо все эти объекты сложить в один контейнер, и применить маску к контейнеру

Ragamuffin 10.12.2008 22:09

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

gloomyBrain 11.12.2008 14:53

Я бы использовал свойство movieClip.swapDepth(число)
число - номер слоя на который Вы хотите запихнуть мувик
чем выше мувик на экране - тем меньше номер слоя для него

ЗЫ
КАК можно было придумать тут маску? =))

UPD
Вообще в подобного рода имитации 3D удобнее всего использовать массивы и методы их сортировки
Т.е. :
1)сложили _у всех клипов в массив
2)сложили их имена в том же порядке в другой массив
3)сортируем массив с _у клипов нужным образом
4)используем Array.RETURNINDEXEDARRAY и получаем массив с номерами клипов согласно их _у
5)по полученным номерам выдаем через swapDepth() слой каждой превьюхе

этот способ быстрее всего работает при значительном числе объектов

Ragamuffin 11.12.2008 23:29

Маску пришлось использовать от того, что при .swapDepth весь ряд иконок начинал мигать. 1\5 он на нужном слое, остальное время сверху над всем. Это еще веселее чем пытаться натянуть на них маску.

Если бы кто подсказал как применить контейнер, сразу бы все решилось

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

На зарубежных ресурсах никто даже н ответил в тему, спасибо)


Часовой пояс GMT +4, время: 10:40.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.