Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.03.2012, 02:19
Core_2_Duo вне форума Посмотреть профиль Отправить личное сообщение для Core_2_Duo Найти все сообщения от Core_2_Duo
  № 1  
Ответить с цитированием
Core_2_Duo

Регистрация: Dec 2011
Сообщений: 9
По умолчанию Event Caller

Доброго времени суток.
Есть вопрос - как из события обратиться к тому мувиклипу, который его вызвал?
Пример:

Код AS3:
for (var j=0; j<xml.mob.length(); j++) {
 	mob[j].timer.addEventListener(TimerEvent.TIMER, function (e:TimerEvent) {
		/* И вот здесь надо обратиться к этому mob[j] */
	});
}
Прошу вашей помощи)

Старый 29.03.2012, 02:24
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Срочно сменить стиль программирования, почитать книжки что ли!
__________________
Поймай яблоко 2!

Старый 29.03.2012, 02:30
Core_2_Duo вне форума Посмотреть профиль Отправить личное сообщение для Core_2_Duo Найти все сообщения от Core_2_Duo
  № 3  
Ответить с цитированием
Core_2_Duo

Регистрация: Dec 2011
Сообщений: 9
Преотличнейший совет. Хотелось бы нагрубить, но не буду.
Это лишь маленький кусок кода, выполняемый в этом цикле. Ах да, забыл несколько строк после начала цикла.
Код AS3:
for (var j=0; j<xml.mob.length(); j++) {
	mob[j]=new Object; /* вот эти */
	mob[j].timer=new Timer(50, 50); /* вот эти */
	mob[j].timer.start(); /* вот эти */
	mob[j].timer.addEventListener(TimerEvent.TIMER, function (e:TimerEvent) {
		/* И вот здесь надо обратиться к этому mob[j] */
	});
}
Но к делу это имеет мало отношения

Старый 29.03.2012, 02:39
Vishapakahr вне форума Посмотреть профиль Отправить личное сообщение для Vishapakahr Найти все сообщения от Vishapakahr
  № 4  
Ответить с цитированием
Vishapakahr

Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
e.target ... , те кусочки что вы написали просто кашмар ))
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !!

Старый 29.03.2012, 02:49
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
"Event Caller" здесь new Timer(50, 50).
Обратиться к нему можно через свойство Event#target или Event#currentTarget.
Объект mob[j], у которого завели динамическое свойство и передали в него ссылку на new Timer(50, 50), никак из таймера а тем более события недоступен: таймер вовсе никак не обязан знать, какие объекты хранят на него ссылки. Тем более что этих объектов могут быть тысячи.
__________________
Reality.getBounds(this);

Старый 29.03.2012, 02:53
Core_2_Duo вне форума Посмотреть профиль Отправить личное сообщение для Core_2_Duo Найти все сообщения от Core_2_Duo
  № 6  
Ответить с цитированием
Core_2_Duo

Регистрация: Dec 2011
Сообщений: 9
Хм, спасибо, это печально.
Интересно, что такого кошмарного в коде?
Поясните уж, если пишите

Старый 29.03.2012, 03:12
Vishapakahr вне форума Посмотреть профиль Отправить личное сообщение для Vishapakahr Найти все сообщения от Vishapakahr
  № 7  
Ответить с цитированием
Vishapakahr

Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
Ну , зачем регистрировать столька таймеров ? зачем прикреплять к каждому обьекту свой таймер из внешной ссылки ? другое дело если есть класс , внутри него регистрируешь .. . Дело в производительности приложения , думаю в вашем коде он просто виснеть будет
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !!

Старый 29.03.2012, 04:13
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
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

Старый 29.03.2012, 04:43
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 9  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
+ анонимная функция

Старый 29.03.2012, 10:49
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 10  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
итого резюме:
Цитата:
Срочно сменить стиль программирования, почитать книжки что ли!
ЗЫ: главное поймите, здесь каждый желает помочь. Обижаться не имеет смысла (уж тем более грубить). Имеет смысл прислушаться. Всякий раз.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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