|
|
|||||
Регистрация: Dec 2011
Сообщений: 9
|
Event Caller
Доброго времени суток.
Есть вопрос - как из события обратиться к тому мувиклипу, который его вызвал? Пример: Прошу вашей помощи) |
|
|||||
Lorem ipsum
|
Срочно сменить стиль программирования, почитать книжки что ли!
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Dec 2011
Сообщений: 9
|
Преотличнейший совет. Хотелось бы нагрубить, но не буду.
Это лишь маленький кусок кода, выполняемый в этом цикле. Ах да, забыл несколько строк после начала цикла. Но к делу это имеет мало отношения |
|
|||||
Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
|
e.target ... , те кусочки что вы написали просто кашмар ))
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !! |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
"Event Caller" здесь new Timer(50, 50).
Обратиться к нему можно через свойство Event#target или Event#currentTarget. Объект mob[j], у которого завели динамическое свойство и передали в него ссылку на new Timer(50, 50), никак из таймера а тем более события недоступен: таймер вовсе никак не обязан знать, какие объекты хранят на него ссылки. Тем более что этих объектов могут быть тысячи.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Dec 2011
Сообщений: 9
|
Хм, спасибо, это печально.
Интересно, что такого кошмарного в коде? Поясните уж, если пишите |
|
|||||
Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
|
Ну , зачем регистрировать столька таймеров ? зачем прикреплять к каждому обьекту свой таймер из внешной ссылки ? другое дело если есть класс , внутри него регистрируешь .. . Дело в производительности приложения , думаю в вашем коде он просто виснеть будет
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !! |
|
|||||
Modus ponens
|
for (var j=0; j<xml.mob.length(); j++) { // var j=0 - не объявлен тип переменной. // var j=0 - инфиксные операторы принято отделять пробелами за исключением обозначений типов. // j никогда не будет больше int.MAX_VALUE, но так, как вы его объявили, он будет типа Number // при этом будет выполнять более простые операции для целых чисел более сложным способом // как для чисел с плавающей запятой. // j<xml.mob.length() - см. инфиксные операторы. // j<xml.mob.length() - это условие будет рассчитано каждый виток цикла. Оно само по себе // представляет вложенный цикл т.е. цикл по всем детям xml с выборкой, потом цикл по // всем детям mob с выборкой. mob[j]=new Object; /* вот эти */ // см. инфиксные операторы. // mob судя по всему типа XMLList, поэтому код приведенный выше равносилен: // mob[j] = XML(""); // что само по себе бессмысленно. // new Object; - использует неидиоматическую запись вызова конструктора // нужно, как минимум, new Object(); // более того, существует короткая запись: {}, которая, кроме всего прочего // занимает меньше памяти (по случайному стечению обстоятельств). // Но хуже всего то, что использование динамического объекта в этом месте ничем не // обосновано. Нужно было создавать объект со статическим типом. Динамические // объекты нужно создавать только тогда, когда не-динамические создавать не возможно. mob[j].timer=new Timer(50, 50); /* вот эти */ // вы повторяете одну и ту же операцию доступа к элементу по индексу. Нормальным // подходом было бы закешировать созданный вами ранее объект в переменную. // создавать новый Timer каждый раз - непозоволительное расточительство. Время всегда одно, // и от количества хронометров не изменится. mob[j].timer.start(); /* вот эти */ // см. кеширование. // кроме всего, начав выражение с динамического доступа, и не приведя тип к какому-нибудь // статическому типу вы продолжаете пользоваться механизмом поиска свойств по имени // вместо того, чтобы позволить компилятору найти нужное свойство еще на этапе компиляции. mob[j].timer.addEventListener(TimerEvent.TIMER, function (e:TimerEvent) { // см. про отсутсвие типизации. // e:TimerEvent - очень короткое имя переменной. слово event не достаточно длинное, // для того, чтобы его сокращать. Однобуквенные переменные не пройдут никакой код-ревью. // кроме того, что вы в цикле понасоздавали таймеров, вы теперь еще понасоздавали // функций, в то время, как достаточно было бы только одной. // у функции не указан возвращаемый тип. - это предупреждение компилятора // т.е. скомпилируется, но в большинстве компаний которые производят продукцию // сколь-нибудь серьезного уровня с использованием AS3 такой код не разрешат // положить в репозитори. /* И вот здесь надо обратиться к этому mob[j] */ // если бы вы исправили все остальное, ну или хотя бы принципиальную // часть, то этот вопрос у вас бы не возник, т.как проблема // решилась бы сама по себе. }); }
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
+ анонимная функция
|
|
|||||
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
итого резюме:
Цитата:
|
Часовой пояс GMT +4, время: 15:09. |
|
« Предыдущая тема | Следующая тема » |
|
|