![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
из туториала по 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);
}
}
![]()
__________________
вставьте подпись здесь |
|
|||||
|
я оказался редкостным чайником и вместо 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()? получается, что для того, чтобы назначить "слушателя" мне нужно иметь ссылку на "вещателя"? или я опять чего-то не понимаю, или это очень не гибкое решение.
__________________
вставьте подпись здесь |
|
|||||
|
.grin! wuz here
|
а как ты себе представляешь прослушивание сообщений, не зная кто вещатель? +)
__________________
Breakcore them all! |
|
|||||
|
2KidsKilla: ну очень просто, есть же свойство eventObj.type, можно eventObj.dispatcher придумать. одно дело знать, кто вещатель, другое дело - для каждого "слушателя" тыкать прямой ссылкой в "вещателя"
__________________
вставьте подпись здесь |
|
|||||
|
.grin! wuz here
|
..........
__________________
Breakcore them all! Последний раз редактировалось KidsKilla; 03.07.2005 в 13:59. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|