![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Jan 2002
Адрес: Kharkov
Сообщений: 57
|
Не могу понять некоторые вещи связанные с объектом ASBroadcaster. Во первых, почему когда делаешь
trace(ASBroadcaster) выводится undefined? Ну каким бы скрытым и не документированным этот объект не был, но он же должен себя хоть как - то проявлять. И второй вопрос, у меня есть мувиклип и связаный с ним с помощью Linkage класс. Мне нужно, чтобы этот класс генерил события, как это сделать? Пробывал в конструкторе писать ASBroadcaster.initialize(this); но это понятно не катит по скольку объекта ASBroadcaster он просто не видит, передавал в класс этот объект как параметр, но не понятно тогда, что должно вызывать broadcastMessage, если this.broadcastMessage, то опять же будет ругаться, чтот такого метода нету, короче бред какой-то. Кстати пробывал трейсить передоваемый объект ASBroadcaster - выдаётся undefined, ну блин - это хитрая особенность или этот бродкастер нужно как то хитро подключать. Ах да, у меня Flash MX 2004, может в нём они вообще убрали этот бродкастер? |
|
|||||
|
Регистрация: Jan 2002
Адрес: Kharkov
Сообщений: 57
|
Круто, надож было так купиться на ASBroadcaster. Блин а почему, на flash-rapper и в уроке здесь на сайте пишется именно ASBroadcaster?
Вообщем спасибо. |
|
|||||
|
Используй класс EventDispatcher
допустим твой класс: import mx.events.EventDispatcher;
class Babble {
function Babble() {
mx.events.EventDispatcher.initialize(this);
}
function say(phrase:String) {
trace(phrase);
var eventObject:Object = {target:this, type:'said'};
eventObject.phrase = phrase;
dispatchEvent(eventObject);
}
function dispatchEvent() {
}
function addEventListener() {
}
function removeEventListener() {
}
}
var chat:Babble = new Babble();
var listener:Object = new Object;
listener.said = function(event) {
trace("Фраза сказана!");
trace("Свойство type: "+ event.type);
trace("Свойство target: "+ event.target);
trace("Свойство phrase: "+ event.phrase);
}
chat.addEventListener("said",listener);
chat.say("Hello World!");
Ты это имел ввиду?
__________________
Don't use the Force, Luke - try to THINK! |
|
|||||
|
Регистрация: Jan 2002
Адрес: Kharkov
Сообщений: 57
|
Цитата:
. Если не сложно может объяснишь?mx.events.EventDispatcher.initialize(this); это я так понимаю объявляется текущий класс генератором событий. dispatchEvent(eventObject); - это генерация события? или тут какой то другой принцип изпользуется? Не подскажешь, где можно прочитать про этот класс? Последний раз редактировалось Manowar1; 25.10.2004 в 11:15. |
|
|||||
|
EventDispatcher.initialize(this); -- методы класса EventDispatcher копируються в твой класс.
var dispatchEvent:Function; var addEventListener:Function; var removeEventListener:Function; собственно методы которые копируються dispatchEvent -- посылает обьект события всем зарегистрированным с твоим классом listener-ам. Где почитать не знаю, в хэлпе есть и собственно сам \Flash MX 2004\en\First Run\Classes\mx\events\EventDispatcher.as я его читал ![]()
__________________
Don't use the Force, Luke - try to THINK! |
|
|||||
|
Регистрация: Jan 2002
Адрес: Kharkov
Сообщений: 57
|
твой пример если взять так прямо работает без проблем, но я попытался вставить, туда куда мне нужно, и ноль реакций.
Щас опишу ситуацию. У меня есть класс, котоорый привязан к мувиклипу по средствам Linkage и наследуется от класса MovieClip. На главную сцену я его переношу посредством attachMovie. При этоом по идее создаётся объект этого класса автоматически. Но эвенты совсем не хотят работать. Вот пример класса (всё не относящееся к делу выкинуто) import mx.events.EventDispatcher;
class loader extends MovieClip{
var x:Number;
var y:Number;
var barWidth:Number;
var target:MovieClip;
function loader(){
...........................
mx.events.EventDispatcher.initialize(this);
onEnterFrame = run;
................................
}
function run() {
...............................
setFinishHandler();
...............................
}
function setFinishHandler(){
var eventObject:Object = {target:this, type:'eventMovieLoaded'};
dispatchEvent(eventObject);
}
function dispatchEvent() {
}
function addEventListener() {
}
function removeEventListener() {
}
}
var obj:Object = new Object();
obj.target = _root;
obj.x = 100;
obj.y = 100;
obj.barWidth = 300;
var aObj:Object = new Object();
aObj.eventMovieLoaded = function(eventObj){
trace('loaded');
}
_root.attachMovie('loader', 'loader1', 2, obj);
_root.loader1.addEventListener(aObj);
trace(_root.loader1.x);
|
|
|||||
|
Регистрация: Jan 2002
Адрес: Kharkov
Сообщений: 57
|
Блин всё работает, не знаю почему, но всё заработало.
Простот поменял имя у эвента и всё... |
|
|||||
|
Сдаеться мне проблема здесь. Метод addEventListener должен получать два параметра (имя события и ссылку на обьект Listener или функцию)
__________________
Don't use the Force, Luke - try to THINK! |
|
|||||
|
Регистрация: Jan 2002
Адрес: Kharkov
Сообщений: 57
|
Да это верно, без этого параметра оно тооже не работает, это я просто добавил код, после определённых колдовских манипуляция с целью обеспечения его работы
. А в начале я с параметром передовал, но увы.. Сейчас всё работает, мне кажется что я толи букву неправильную где-то записал, тооли ещё что-то в этом роде.Кстати может подскажешь, пытался в этоом классе dispatcherEvent раставлять trace, но они нифига не работали, получается, что флеш откудато скомпиленный вариант класса берёт, не знаешь как его можно пересобрать? |
![]() |
Часовой пояс GMT +4, время: 08:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|