![]() |
Каким образом через event listener передать переменную в функцию?
У меня есть "создатель частиц", и мне их нужно в определенный момент (к примеру, когда полностью частица выполнит Tween _fly) удалять. Но, как вы видите, в коде невозможно с листенером передать тот же спрайт в новую функцию, чтобы он уже работал с ней. Есть идеи, как это выполнить? Полный код с возможностью теста вот:
Код AS3:
|
А у Tween нет ссылки для кого он работает? А у TweenEvent?
|
Есть .currentObject у TweenEvent. Он возвращает Tween (то бишь _fly перелетает плавно в функцию dissapear)
У Tween-а есть .obj, но я к нему даже если присвою этот Tween чему-то не могу достучаться. Куча ошибок в выводе висит. |
я более чем уверен, что у TweenEvent есть свойства target и currentTarget.
|
.currentTarget у TweenEvent возвращает просто объект Tween. А мне нужно доступ к спрайту i, которым управляет Tween. Все намного сложнее)
Добавлено через 7 минут Ура! Я исправил и теперь все исчезает. Остался один момент. Я думал это связано с бесконечным спавном частиц. Оказывается... Почему у меня все зависает? К примеру Tween около 98 из 100 шаров просто застывает? Я думал это графический глюк а это программный. Вот исправленный код, можете сами протестить у себя. Код AS3:
|
http://help.adobe.com/ru_RU/FlashPla...ons/Tween.html
Цитата:
Код AS3:
|
Я могу ошибаться, но возможно у меня где-то конфликт с именами у Tween. Т.е. когда одна из частиц заканчивает движение внезапно все застывают. Не понимаю, где косяк.
Добавлено через 38 секунд Gbee да, вы правы :) Исправил. Проблема теперь в застывании всех частиц. Добавлено через 1 час 33 минуты Немного погуглив узнал о Garbage Collection, великолепной помойке, месте, куда флеш скидывает все мои твины, решив, что я насилую без перебоя то ли sprite переменную то ли _fly и drop. В общем по факту - нельзя все это как в AS2 через одну ссылку (ей является sprite, после i) столько переменных проносить. Метод "групповухи" теперь не работает. Решение я нашел, судя по всему - надо использовать массив, где будут храниться эти спрайты. Но у меня появился вопрос. Я могу ошибаться, но разве в массиве можно использовать спрайты? И еще, может я зря использую Tween для этой анимации и есть способ проще? А то я в интернете натыкаюсь постоянно на то, что Tween вшитий во флеш имеет свои баги и вообще лучше всего качать сборки Tween класса(Tweener и другие). |
В массиве можно спрайты, можно в типизированном массиве vector спрайты, не вопрос.
|
Сделал массив спрайтов. Не помогло. Зависание повторяется.
Попробую Твины все в каждый массив засунуть. Будет массив Спрайта к примеру particles [1] и ему будут сопоставлены массивы Твинов _flymassive[1] и dropmassive[1]. Честно, я не знаю, что я делаю, но теоретически это сможет сэкономить как-то и оптимизировать все. Вы вообще сталкивались с зависанием в Tween классе? Гугл говорит что это частая проблема для него. Только решения от одного к другому мистические и больше похожи на "подпрыгни дерни за ухо и вроде пройдет". |
Используйте проверенные твины (например TweenNano от greensock) и храните на них ссылки, чтобы GC не убивал объекты.
|
Подскажите, как хранить ссылки? Для каждого объекта своя ссылка, а не одна взаимозаменяемая?
|
Конечно своя. Используйте симметричные массивы, как вы писали до этого. Вектор для спрайтов и вектор для твинов.
|
Спасибо :) Установил TweenLite и пытаюсь разобраться, почему у меня вместо постоянного создания все зациклилось на последних 2-х частицах)
Добавлено через 19 минут Мне кажется, или я снова где-то накосячил? Теперь вместо зависаний я получил "не изменение .x частиц и странное изменение .y" :( Я ошибаюсь, или TweenLite не поддерживает одновременное изменение параметров двумя ТвинЛайтами у одного объекта? Например у спрайта i? Так ведь получается странно. Мне нужно изобразить "физический эффект" подпрыгивания мячиков, а получается ИЛИ полет направо (изменение x) ИЛИ подпрыгивания на месте (изменение y). К тому же первая проблема снова открылась. Благодаря продвинутому TweenLite зависаний вообще не должно быть, что позволяет убрать массивы. НО, без массивов и публичной переменной снова невозможно вытащить этот спрайт для исчезновения. Какой-там. Придется снова искать способ создания всего этого на стандартном Tween-е, потому как ТвинЛайт не позволяет воссоздать одновременно два ТвинЛайта. Вот это он проигрывает по тому, что стоит позднее (убери я последний твинлайт он обыграет первый): Код AS3:
С этим ТвинЛайтом больше проблем появилось чем решилось :( Осталось пробовать остановить зависания в стандартном Твине от адоба |
| Часовой пояс GMT +4, время: 22:35. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.