Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   asBroadcaster, eventDispatcher (http://www.flasher.ru/forum/showthread.php?t=103433)

IsupovS 05.11.2007 14:54

asBroadcaster, eventDispatcher
 
полазил по форуму, но вразумительного примера их использования так и не нашел. грубо говоря клип - меняет свое положение без какой нибудь посторонней помощи(т.е. без вмешательства пользователя) надо отловить изменение координаты клипа без использования onEnterFrame или setInterval.

udaaff 05.11.2007 17:36

http://www.google.com/search?client=...utf-8&oe=utf-8

IsupovS 05.11.2007 18:44

Спасибо поиском я и сам умею пользоваться..
единственное что смог найти - это следующий код http://flasher.ru/forum/showthread.php?t=65962

terbooter 06.11.2007 06:47

В любом случае вам придется вещать нужное событие "вручную", то есть проверять выполняется ли условие и если выполняется, то сказать всем слушателям о наступлении события.
А чтобы проверить выполнено ли условию придется вызывать периодическую проверку.

Код:

...
onEnterFrame = function ()
{
        if (mc.initx != mc._x)
        {
                someObject.broadcastMessage("onMove")
        }
};
...


wvxvw 06.11.2007 11:07

Код:

var o:Object = {};
var _mc:MovieClip = _root.attachMovie("myLibMovie","myMovie",0);
AsBroadcaster.initialize(o);
o.addProperty("x",
                          function():Number{return this.__x},
                          function(n:Number){this.__x=n;_root.myMovie._x=n;this["broadcastMessage"]("xMove",this.__x);});
var l:Object = {};
l.xMove = function(n:Number):Void {
        //Using broadcaster
        trace("x set to: "+n);
}
o["addListener"](l);
o.watch("x",xWatcher);
function xWatcher(prop,oval,nval){
        //Using object's predefined methods
        trace("I'm watching u, u moved to: "+nval);
        return nval;
}
o.x = 50;

Можно и без ентерфрейма =)

IsupovS 06.11.2007 14:18

я этот вариант уже рассматривал, но это немного не то, тк событие срабатывает только тогда когда координата задается явно
o.x = 50;
то есть при движении мне все равно придется вызывать онЕнтерФрейм,
судя по всему в данной ситуации листенеры мне не помогут..

wvxvw 06.11.2007 14:25

Ну, дык, надо так построить, чтобы координата всегда задавалась только таким способом. Ну, или если не хочется, тогда да, только проверять все время, других способов нет...


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

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