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

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

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

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
По умолчанию [FAME][AS2]разбираемся с EventDispatcher

из туториала по EventDispatcher на actionscript.org сделал два класса:

Код:
import test.Test2
import mx.utils.Delegate;
import mx.events.EventDispatcher;

class test.Test extends Object {
        var test2:Test2;
        
        // переменные функции для EventDispatcher
		var addEventListener:Function;
    	var removeEventListener:Function;
    	var dispatchEvent:Function
    	
        function handleConstruct(eventObj) {
			TRACE(Flashout.INFO + "handleConstruct called");
		}		
        function Test() {
        	Flashout.init();
			TRACE(Flashout.INFO + "Application started");			
	
	    	EventDispatcher.initialize(this);
	    	
	    	var myClass = new test.Test2(1000);
			test2.addEventListener('timeout', Delegate.create(this, handleConstruct));

        }
        
        // --- Main Entry Point
        static function main() {                
                var test:Test = new Test();
        }
}
-------------------------------------------------------------
import mx.events.EventDispatcher;
import mx.utils.Delegate;
class test.Test2 {
	    var timeInt:Number;
	    
        var addEventListener:Function;
        var removeEventListener:Function;
        var dispatchEvent:Function;
        
        function handleTimer()
        {
        		TRACE(Flashout.INFO + "handleTimer");
                dispatchEvent({type:'timeout', target:this, message:'Hey dude the timer is done', time:getTimer()});
                clearInterval(timeInt);
        }
        
        function Test2(len)
        {       		
                EventDispatcher.initialize(this);
                timeInt = setInterval(Delegate.create(this, handleTimer), len);
        }
}
handleTimer() срабатывает, а вот handleConstruct() уже нет. в чем моя ошибка? помогите советом, пожалуйста
__________________
вставьте подпись здесь

Старый 02.07.2005, 21:39
genius вне форума Посмотреть профиль Отправить личное сообщение для genius Посетить домашнюю страницу genius Найти все сообщения от genius
  № 2  
Ответить с цитированием
genius
 
Аватар для genius

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
я оказался редкостным чайником и вместо test2 написал myClass. работающий код такой:

Код:
import test.Test2
import mx.utils.Delegate;
import mx.events.EventDispatcher;

class test.Test extends Object {
        var test2:Test2;
        
        // переменные функции для EventDispatcher
	var addEventListener:Function;
    	var removeEventListener:Function;
    	var dispatchEvent:Function
    	
        function handleConstruct(eventObj) {
		TRACE(Flashout.INFO + "handleConstruct called");
		}		
        function Test() {
        	Flashout.init();
		TRACE(Flashout.INFO + "Application started");			
	
	    	EventDispatcher.initialize(this);
	    	
	    	var test2 = new test.Test2(1000);
		test2.addEventListener('timeout', Delegate.create(this, handleConstruct));

        }
        
        // --- Main Entry Point
        static function main() {                
                var test:Test = new Test();
        }
}
-------------------------------------------------------------
import mx.events.EventDispatcher;
import mx.utils.Delegate;
class test.Test2 {
	var timeInt:Number;
	    
        var addEventListener:Function;
        var removeEventListener:Function;
        var dispatchEvent:Function;
        
        function handleTimer()
        {
        	TRACE(Flashout.INFO + "handleTimer");
                dispatchEvent({type:'timeout', target:this, message:'Hey dude the timer is done', time:getTimer()});
                clearInterval(timeInt);
        }
        
        function Test2(len)
        {       		
                EventDispatcher.initialize(this);
                timeInt = setInterval(Delegate.create(this, handleTimer), len);
        }
}
появился ещё вопрос.

в данном примере добавлять "слушателя" нужно следующим методом: test2.addEventListener()

почему не просто addEventListener() или test.addEventListener()? получается, что для того, чтобы назначить "слушателя" мне нужно иметь ссылку на "вещателя"? или я опять чего-то не понимаю, или это очень не гибкое решение.
__________________
вставьте подпись здесь

Старый 03.07.2005, 01:51
KidsKilla вне форума Посмотреть профиль Отправить личное сообщение для KidsKilla Посетить домашнюю страницу KidsKilla Найти все сообщения от KidsKilla
  № 3  
Ответить с цитированием
KidsKilla
.grin! wuz here
 
Аватар для KidsKilla

Регистрация: Aug 2004
Адрес: paradise city
Сообщений: 3,981
Отправить сообщение для KidsKilla с помощью ICQ
а как ты себе представляешь прослушивание сообщений, не зная кто вещатель? +)
__________________
Breakcore them all!

Старый 03.07.2005, 06:33
genius вне форума Посмотреть профиль Отправить личное сообщение для genius Посетить домашнюю страницу genius Найти все сообщения от genius
  № 4  
Ответить с цитированием
genius
 
Аватар для genius

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
2KidsKilla: ну очень просто, есть же свойство eventObj.type, можно eventObj.dispatcher придумать. одно дело знать, кто вещатель, другое дело - для каждого "слушателя" тыкать прямой ссылкой в "вещателя"
__________________
вставьте подпись здесь

Старый 03.07.2005, 12:28
KidsKilla вне форума Посмотреть профиль Отправить личное сообщение для KidsKilla Посетить домашнюю страницу KidsKilla Найти все сообщения от KidsKilla
  № 5  
Ответить с цитированием
KidsKilla
.grin! wuz here
 
Аватар для KidsKilla

Регистрация: Aug 2004
Адрес: paradise city
Сообщений: 3,981
Отправить сообщение для KidsKilla с помощью ICQ
..........
__________________
Breakcore them all!


Последний раз редактировалось KidsKilla; 03.07.2005 в 13:59.
Создать новую тему Ответ Часовой пояс GMT +4, время: 08:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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