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

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

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

Регистрация: Jun 2012
Сообщений: 28
По умолчанию как передать значение в функцию прослушивателя

Здравствуйте
Подскажите пожалуйста как передать значение в функцию прослушивателя. Тоесть я назначаю прослушиватель
Код AS3:
timer[i].addEventListener(TimerEvent.TIMER,func_timer);
timer[i].start();
потом функция прослушивателя

Код AS3:
function func_timer(event:TimerEvent){
}
как мне в функцию передать еще одно значение например вот так
Код AS3:
function func_timer(event:TimerEvent,my_value){
}
Просто как в AS2 не работает
Код AS3:
timer[i].addEventListener(TimerEvent.TIMER,func_timer,22);
timer[i].start();

Старый 01.07.2013, 22:04
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 2  
Ответить с цитированием
chamele0n
[+4 24.04.13]
[+4 20.04.13]

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
Код AS3:
package {
	import flash.utils.Timer;
 
    public class ttimer extends Timer   {
 
		private var tval:Number = 0;
 
        public function ttimer(delay:Number, count:int = 0, val:Number = 0) : void {
			super(delay, count);
			tval = val;
        }
 
		public function get value() : Number {
			return tval;
		}
    }
}

Код AS3:
var tt:ttimer = new ttimer(1000, 0, 22);
tt.addEventListener(TimerEvent.TIMER, func_timer);
 
function func_timer(e:TimerEvent) : void {
	var timer:ttimer = e.target as ttimer;
	trace(timer.value);                          // 22
}
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

Старый 01.07.2013, 23:21
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 3  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
1.Классы принято писать с Большой буквы
2. Принято наследоваться от Event и передавать объект (Ttimer)в качестве параметра расширенного класса

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Подскажите пожалуйста как передать значение в функцию прослушивателя. Тоесть я назначаю прослушиватель
Никак. В данном случае.
Чтобы иметь возможность передать туда что-то свое, нужно будет:
Во первых расширить класс Timer и использовать вместо родного таймера свой. И во-вторых в этом классе по тику посылать собственное событие, как написал Babylon

Но скорее всего, здесь можно обойтись без это. Зачем вам нужно передавать туда какой-то параметр, и какой именно?

Старый 01.07.2013, 23:56
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 5  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Не надо извращать мою мысль . Я предлагал расширить Event, но не предлагал посылать собственных событий.TimerEvent вполне себе событие.

Добавлено через 1 минуту
И передать значение в функцию конечно можно, но это хак.

Добавлено через 4 минуты
Как то так. Класс (type : String, timer:Ttimer, bubbles : Boolean = false, cancelable : Boolean = false)

Старый 02.07.2013, 02:02
Koopa вне форума Посмотреть профиль Найти все сообщения от Koopa
  № 6  
Ответить с цитированием
Koopa
Banned
[+1 30.08.14]
[+1 26.02.14]

Регистрация: Apr 2012
Сообщений: 162
А у вас тут весело.Не нравиться скриптовый язык-перепишем. Удачи вам ребят! Особенно в переписывании.
P.S.По теме: Функция прослушивателя принимает только переменные и методы события.

Старый 02.07.2013, 02:35
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 7  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Непонятна ваша веселая ирония. Наследование вполне стандартный прием в таких случаях.

Старый 02.07.2013, 10:37
sasha88886 вне форума Посмотреть профиль Отправить личное сообщение для sasha88886 Найти все сообщения от sasha88886
  № 8  
Ответить с цитированием
sasha88886

Регистрация: Jun 2012
Сообщений: 28
Дело в том что я хотел проработать массив таких вот таймеров в которых прослущиватель один и соответственно функция тоже одна. Но задача в том как я узнаю какой по номеру таймер сработал и потому хотел бы передать это значение в функцию. Если я правильно понял класс который предложил chamele0n и Babylon то мне при каждой итерполиции нужно будет переустанавливать таймер. А это немного неудобно.
Я, действительно думал, что для такого решения есть чо то по проще по типу as2, В принципе я решил обойти эту необходимость и реализовать все по другому. А за способ спасибо пригодится на следующий раз

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

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Если отслеживать нужно только номер, то 100% сработает вариант с расширением класса Timer
Код AS3:
package
{
	import flash.utils.Timer;
 
	public class MyLittleTimer extends Timer 
	{
		public var number:Number; //паблик для простоты, я в курсе что лучше использовать private с set и get и т.д. и т.п.
 
		public function MyLittleTimer(delay:Number, repeatCount:int=0) 
		{
			super(delay, repeatCount);	
		}
 
	}
}
И потом используйте вместо стандартного, не забыв указать номер таймера после создания:
Код AS3:
myLittleTimer1:MyLittleTimer = new MyLittleTimer(1000, 1);
myLittleTimer1.number = 1;
myLittleTimer1.addEventListener(TimerEvent.TIMER,func_timer);
 
myLittleTimer2:MyLittleTimer = new MyLittleTimer(1320, 1);
myLittleTimer2.number = 2;
myLittleTimer2.addEventListener(TimerEvent.TIMER,func_timer);
А потом, в слушателе
Код AS3:
private function func_timer(e:TimerEvent):void
{
    trace(e.target.number);
}
Можно сделать свой таймер с доп параметром в конструкторе


Последний раз редактировалось KumoKairo; 02.07.2013 в 13:12.
Старый 02.07.2013, 13:28
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 10  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
А почему нельзя сделать так?
Код AS3:
var myTiimer:Timer = new Timer(1000,1);
myTiimer.addEventListener(TimerEvent.TIMER,func_timer);
private function func_timer(e:TimerEvent):void
{
    anyFunction(e.target.name);
}
private function anyFunction(name:String)
{
// тут список условий в зависимости какой таймер сработал
}

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

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

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


 


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


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