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

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

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

Регистрация: Nov 2007
Сообщений: 84
По умолчанию Передача параметра от слушателя в исполняемую им функцию

Вот так код работает:
Код AS3:
			alphaOver.addEventListener(TweenEvent.MOTION_CHANGE, tweenMyFish);
		}
 
		function tweenMyFish(event:TweenEvent):void {
А вот так:
Код AS3:
			alphaOver.addEventListener(TweenEvent.MOTION_CHANGE, tweenMyFish(wCC));
		}
 
		function tweenMyFish(event:TweenEvent, num:int):void {
Естественно - ошибка, а как правильно написать передачу параметра wCC от слушателя к tweenMyFish?


Последний раз редактировалось Thanx7; 29.12.2008 в 12:02.
Старый 29.12.2008, 12:09
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Во втором варианте вы вместо ссылки на функцию-слушатель передаёте результат её работы.

Возможный вариант:

Код AS3:
			alphaOver.addEventListener(TweenEvent.MOTION_CHANGE, getFinishHandler(wCC));
		}
 
		private function getFinishHandler(num:int):Function {
			return function(e:TweenEvent){
				trace(num);
			}
		}
Но всё же передача параметра в слушатель - не самое лучшее решение. На худой конец, можно сделать хэш по твинам и брать нужное значение в зависимости от e.target
__________________
тонкий тролль, осеянный благодатью

Старый 29.12.2008, 12:21
Thanx7 вне форума Посмотреть профиль Отправить личное сообщение для Thanx7 Найти все сообщения от Thanx7
  № 3  
Ответить с цитированием
Thanx7

Регистрация: Nov 2007
Сообщений: 84
Ваш код не работает, ошибка: "1051: Return value must be undefined". Это, видимо, из-за указанного ":void", а если убрать ":void" - то всё великолепно.

Спасибо за объяснение принципа работы и код.

ПС. Я пока не знаю, что такое хеш.

Старый 29.12.2008, 20:12
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 4  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Да, void по привычке написал. Исправил на Function.
У вас тоже сначала в 1 куске кода слушатель был вообще без параметров, а во 2м только с одним
__________________
тонкий тролль, осеянный благодатью

Старый 29.12.2008, 20:38
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
А так можно делать, в плане быдлокода?

Старый 29.12.2008, 20:44
Thanx7 вне форума Посмотреть профиль Отправить личное сообщение для Thanx7 Найти все сообщения от Thanx7
  № 6  
Ответить с цитированием
Thanx7

Регистрация: Nov 2007
Сообщений: 84
GAIKER, верно подметили. Я оперативно исправил недосмотр в сообщении через 5 минут после публикации.

Кстати, GAIKER, действительно, передавать параметр через слушатель не очень удобно... после того, как начал внутри функций расставлять различные флаги - совершенно запутался, и даже через trace не мог разобраться, в чём причина глюков. Когда же сделал слушатели без передачи параметров - ровненько 4 штуки, вместо одного с передачей параметров, то всё прояснилось и заработало, меньше стала "размерность программы" - у меня же не процессор в голове. В общем, да, соглашусь, в сложной структуре передавать параметр через слушатель не очень здорово, разве что в элементарных каких-то случаях, когда пришлось бы писать вручную десяток, или даже сотню простых функций.

Добавлено через 2 минуты
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
А так можно делать, в плане быдлокода?
Ну зачем же так нервничать.
Просто эксперимент.


Последний раз редактировалось Thanx7; 29.12.2008 в 20:47.
Создать новую тему Ответ Часовой пояс GMT +4, время: 14:08.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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