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

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

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

Регистрация: Feb 2008
Сообщений: 71
По умолчанию Как передать функции-слушателю, какой либо параметр?

Вот собственно и вопрос. Как передать функции-слушателю, какой либо параметр?

Старый 13.09.2010, 20:20
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
воспользуйтесь поиском по разделу

Старый 13.09.2010, 20:56
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
alexes, вместе с событием.

Старый 13.09.2010, 23:09
Tr1te вне форума Посмотреть профиль Отправить личное сообщение для Tr1te Найти все сообщения от Tr1te
  № 4  
Ответить с цитированием
Tr1te
 
Аватар для Tr1te

Регистрация: Jun 2009
Сообщений: 461
Как вариант, своего слушателя написать:

Класс слушателя:
Код AS3:
package {
 
	import flash.events.*;
 
	public class EventWithParam extends Event {
 
		private var SavedEventParam;
 
		public function EventWithParam(EWP_EventType:String,EWP_EventParam) {
			super(EWP_EventType,true,false);
			SavedEventParam=EWP_EventParam;
		}
 
		public function get EventParam() {
			return SavedEventParam;
		}
	}
}
Пример отправки и приема:
Код AS3:
package {
	import flash.display.*;
	import flash.events.*;
 
	public class Main extends Sprite {
		//---------------------------------------------------------------------------
 
		//--------------------------------------------------------------------------- 
		public function Main():void {
			addEventListener("Event",func);
 
			var id:int=54;
			dispatchEvent(new EventWithParam("Event",id));
			//Если надо передать несколько параметров я передаю массив или объект.
			var A:Array=[id,id+4,id+44];
			dispatchEvent(new EventWithParam("Event",A));
 
		}
		//---------------------------------------------------------------------------
 
		//--------------------------------------------------------------------------- 
		//Эта функция получает параметр.
		private function func(e:EventWithParam) {
			trace("Event param = ",e.EventParam);
		}
		//---------------------------------------------------------------------------
 
		//--------------------------------------------------------------------------- 
	}
}

Старый 13.09.2010, 23:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Tr1te, за подобный код, вообще говоря, руки отрывают по пояс.

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Сообщение от etc Посмотреть сообщение
Tr1te, за подобный код, вообще говоря, руки отрывают по пояс.
Я кстати всё чаще вижу темы с вопросом - как передать массив в слушатель и всякие реализации. Это похоже на моду )

Или тебя смущает отсутствия остальных параметров в событии, переопределенного клона, отсутствие констант под событий, отсутствие типизации, несоответствие конвенции и странно названный аксессор в событии? =D

Старый 13.09.2010, 23:34
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Я кстати всё чаще вижу темы с вопросом - как передать массив в слушатель и всякие реализации. Это похоже на моду )
Дело даже не в самом подходе, больше в реализации оного. И то и другое — убого.

Старый 14.09.2010, 00:14
Tr1te вне форума Посмотреть профиль Отправить личное сообщение для Tr1te Найти все сообщения от Tr1te
  № 8  
Ответить с цитированием
Tr1te
 
Аватар для Tr1te

Регистрация: Jun 2009
Сообщений: 461
Покажите лучше вариант. Я с удовольствие поучусь. А если нет альтернатив, то буду писать так.

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
alexes,
я так понимаю, что этот топик является де-факто продолжением соседнего топика "Не срабатывает цикл.".

Если хотите сделать правильно, сделайте, как я предложил (постинг с тремя пунктами в нижней части первой страницы). Все данные кладем внутрь объекта-бутылки, получаем потом событием.

Если хотите сделать неправильно, но быстро, то можете передать индекс выбранной бутылки через имя объекта-бутылки. Т.е., при создании бутылки присвоить ей индекс в имени, а в слушателе его прочитать.

Код:
  bottleObj.name = i;      // присвоили имя-индекс
  bottleObj.addEventListener(MouseEvent.MOUSE_DOWN,bottleSelected);

  private function bottleSelected(e:Event) : void
  {
    var iBottle:int = int(e.target.name);    // прочитали индекс бутылки
    trace(iBottle);
  }
Но я лично так делать НЕ РЕКОМЕНДУЮ.

Добавлено через 1 минуту
Tr1te,

Код AS3:
package 
{
    import flash.events.Event;
 
    public class AppEvent extends Event 
    {
 
        public function AppEvent(type:String, body:Object, bubbles:Boolean = false, cancelable:Boolean = false) 
        {
            _body = body;
            super(type, bubbles, cancelable);
        }
 
        override public function clone():Event 
        {
            return new AppEvent(type, body, bubbles, cancelable);
        }
 
        protected var _body:Object;
 
        public function get body():Object { return _body; }
    }
 
}

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

Регистрация: Jun 2009
Сообщений: 461
mikhailk, поясните пожалуйста.
Чем отличается?
Параметры bubbles, cancelable задаются через конструктор, безусловно правильней - учту.
Клон функция, ну это уже бонус. Можно дописывать, что угодно. Полагаю, что это не влияет на отрывание рук.
А что еще может влиять на отрывание рук?

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

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

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


 


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


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