![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Привет
Ситуация такая: Мне надо правильно направить ребенка методом addChild. Instance name контейнера указать я не могу, т.к. на сцене несколько контейнеров, и и у элементов внутри них единый код через e.currentTarget Получается если я просто добавляю addChild -ом, то элемент ложится поверх всего на главную сцену, и он виден на всех контейнерах, когда я меняю их видимость function clicked (e:MouseEvent):void{ if (animation == true){ return; } else{ srcX = e.currentTarget.x; srcY = e.currentTarget.y; var scaleNew = (stage.stageHeight-240) / e.currentTarget.startHeight; if (!zoomed){ if (page1.visible == true){ TweenLite.to(page1.ugolki, 0.5, {alpha:0}); } else { TweenLite.to(page2.ugolki2, 0.5, {alpha:0}); } animation = true; addChild(e.currentTarget as MovieClip); TweenLite.to(e.currentTarget, 1, {delay:0.2, x:stage.stageWidth/2, y:stage.stageHeight/2, scaleX:scaleNew, scaleY:scaleNew, ease:Back.easeOut, onComplete: finishedAnimation}); zoomed = true; } else{ if (page1.visible == true){ TweenLite.to(page1.ugolki, 0.3, {delay: 0.5, alpha:1}); page1.addChild(page1.ugolki); } else{ TweenLite.to(page2.ugolki2, 0.3, {delay: 0.5, alpha:1}); page2.addChild(page2.ugolki2); } animation = true; TweenLite.to(e.currentTarget, 0.6, {x:e.currentTarget.startX, y:e.currentTarget.startY, scaleX:1, scaleY:1, ease:Back.easeIn, onComplete: finishedAnimation}); zoomed = false; } } } Последний раз редактировалось pomuс; 20.12.2012 в 19:46. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Поскольку вопроса пока не прозвучало, а следующим сообщением будет "и чо, опять ни одного телепата на форуме?", попробую начать дискуссию.
1) Цитата:
2) Что вдохновило Вас 7 раз написать "e.currentTarget" в одной функции?
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Wolsh
вопрос состоит в том, что можно ли как то указать в методе addChild тот контейнер, откуда изначально вызван клип? Если бы там был всего 1 контейнер, то понятно что это выглядело бы как page1.addChild(e.currenttarget); . но в данном случае у e.currentTarget может быть как page1, так и page7. В по моей логике я бы это написал как parent.e.currentTarget.addChild(e.currentTarget) .. "добавить в изначального родителя" 1) да, это я что то влепил не то, когда экспериментировал наверное 2) ну насколько хватало навыков, так и делал.. а есть вариант сделать проще? |
|
|||||
|
Опишите что происходит у вас, и что должно происходить. Если объект на сцене у него не null свойство parent. Так вы можете получить ссылку на его "контейнер" и в него уже добавлять (вам правда нужно добавлять объект туда где он уже есть ещё раз?) объект.
__________________
Будь проще. |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Цитата:
ну да, надо добавлять туда же. Конечно если бы можно было как то назначать индекс слоя подругому как не addChild то пошел бы и другой вариант. Я знаю про setChildIndex но там суть одна и та же, контейнер надо указать |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
function clicked (e:MouseEvent):void{ var mc:MovieClip = e.currentTarget as MovieClip; if (animation == true){ return; } else{ srcX = mc.x; srcY = mc.y; var scaleNew = (stage.stageHeight-240) / mc.startHeight; if (!zoomed){ if (page1.visible){ TweenLite.to(page1.ugolki, 0.5, {alpha:0}); } else { TweenLite.to(page2.ugolki2, 0.5, {alpha:0}); } animation = true; mc.parent.addChild(mc); // наверное, так? TweenLite.to(mc, 1, {delay:0.2, x:stage.stageWidth/2, y:stage.stageHeight/2, scaleX:scaleNew, scaleY:scaleNew, ease:Back.easeOut, onComplete: finishedAnimation}); zoomed = true; } else{ if (page1.visible){ TweenLite.to(page1.ugolki, 0.3, {delay: 0.5, alpha:1}); page1.addChild(page1.ugolki); } else{ TweenLite.to(page2.ugolki2, 0.3, {delay: 0.5, alpha:1}); page2.addChild(page2.ugolki2); } animation = true; TweenLite.to(mc, 0.6, {x:mc.startX, y:mc.startY, scaleX:1, scaleY:1, ease:Back.easeIn, onComplete: finishedAnimation}); zoomed = false; } } } Так же избыточны конструкции типа if (page1.visible == true). Вы берете булево от булево. Можно бесконечно упаковывать их в скобки например)) : if (((page1.visible == true) == true) == true) {} Выглядит нелепо, но Вы делеаете абсолютно то же самое, когда пишете if (page1.visible == true). Потому как эти выражения равны: (page1.visible == true) абсолютно равно (page1.visible)
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Wolsh спасибо, ввел изменения.
Просто я так изначально писал, т.к. совсем зеленый в АС3, и таким способом мне легче было проследить логику скрипта |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:24. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|