Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   ASBroadcaster. Генрация классом своих событий. (http://www.flasher.ru/forum/showthread.php?t=63974)

Nirth 08.11.2004 23:55

туплю не по детски
 
думал разобрался но нет =(

по моему скомному мнению это дело должно добавить событие onSecond(вызываеться раз в секунду);

Код:

function second():Void {
  AsBroadcaster.initialize(this);
  this.broadcastMessage("onSecond");
}
//::
function everySecond() {
  this.interval = setInterval(this, "second", 1000);
}

но это дело говорит мне что я ошибся.

There is no method with the name 'broadcastMessage'.

интересно то что если делать вот так
Код:

function second():Void {
  AsBroadcaster.initialize(this);
  var mc:MovieClip = this;//тоесть не пользуемся ссылкой this
  mc.broadcastMessage("onSecond");
}
//::
function everySecond() {
  this.interval = setInterval(this, "second", 1000);
}

то ошибки не выдает но не работает, пытался подобный фокус проделать с дабл кликом и тоже не выдает события(если ссылку заменить) тобишь ссылка должна быть обязательно как я понимаю, но что сделать чтобы класс врубился что у него есть метод броадкаст месседж.

silin 09.11.2004 00:47

непонять чего ты добиваешься
Код:

AsBroadcaster.initialize(brodcaster={})//инициализируем вещательный объект
second=function(){        brodcaster.broadcastMessage("onSecond")}//вещаем
interval = setInterval(second, 1000)//запускаем интервал
brodcaster.addListener(listener={})//регистрируем листенер на вещателе
listener.onSecond=function(){trace("  :message received")}//слушаем

а вот что твой класс должен делать неясно

Nirth 09.11.2004 01:36

мой класс это часы, чтобы не вешать событие на onEnterFrame я хочу повесить на онСеконд(тоесть чтоб проверялось только раз в секунду а не 20 раз в секунду).

Nirth 09.11.2004 11:09

Silin
если не трудно мог бы объяснить почему надо каждый раз создавать листенер, тоесть это похоже на обходной путь, я создаю объект, делаю ему событие и подписываю уже мувик на получение, и почему не работает прямая привязка(this)?

silin 09.11.2004 19:31

не пойму чего ты хочешь получить - событие каждую секунду?
Цитата:

мой класс это часы...
зачем для этого класс? : пусть вещает кто угодно, а все имеющие уши( подписанные на прослушку) - услышат
Цитата:

почему надо каждый раз создавать листенер
можешь не создавать, а использовать существующий объект ,тот же мувик- он ведь тоже объект, (тока добавить его к списку листенеров вещателя по любому надо)
Цитата:

я создаю объект, делаю ему событие и подписываю уже мувик на получение
ну все правильно:
Код:

class Sec extends MovieClip{
        var bc:Object
        function Sec(){
                AsBroadcaster.initialize(bc={})
                bc.addListener(this)
                setInterval(this, "second", 1000);
        }
        function second(){
                bc.broadcastMessage("onSecond");
        }
}


silin 09.11.2004 19:34

Вложений: 1
:)

silin 09.11.2004 19:45

я тут задним числом подумал, что не нужен тебе бродкастер
(по сути ты пытаешься заставить мувик вещать самому себе)
вот так будет уместнее (проще надо быть)
Код:

class Sec extends MovieClip{
        function Sec(){
                setInterval(this, "onSecond", 1000);
        }
        function onSecond(){}
}

определив такому мувику onSecond , будешь иметь вызов ее раз в секунду ( ведь этого же надо ?)

llllllllll 11.11.2004 04:37

Цитата:

Оригинал написал(а) Proman

Допустим у нас есть текстове поле src_fld и мы хотим связать его свойство text со свойством text текстового поля dest_fld с использованием класса Binding ...

Случай клинический ;) .... допустим мы хотим узнать сумму чисел 2 и 2 с использованием класса "Class2x2" ... ;)

Proman 11.11.2004 16:41

Цитата:

Случай клинический .... допустим мы хотим узнать сумму чисел 2 и 2 с использованием класса "Class2x2" ...
Да действительно клиничиский, мы тут вообще о чем говорили-то, О генерации искуственных событий или о передачи данных между двумя текстовыми полями? Или нужно было в виде примера что-то посложней написать :D так чтоб без ящика пива и не разобрать, и достойно было применения класса Binding ? ;)

llllllllll 11.11.2004 18:56

Про поля забудь, ... я в хелп тоже заглядывал, и если там напишут головой об стену биться, видимо ряды форума поредеют ...

А речь как раз о том, о "Классе - Два умножить на Два", ксати, ММ, продукты свои , к пример Breeze Player - делает как надо ;) с TellTarget и ты ды :)


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

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