Форум 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)
-   -   Mouse.broadcastMessage (http://www.flasher.ru/forum/showthread.php?t=93553)

dmitriy_rsl 23.03.2007 18:42

Mouse.broadcastMessage
 
Пишу обработчик для правой кнопки мыши:
Код:

_root.onEnterFrame = function() {
        if(ASNative(800, 2)(2)) {
                this.rightDown = true;
                Mouse.broadcastMessage("onRightMouseDown");
        } else {
                if(this.leftDown) {
                        this.rightDown = false;
                        Mouse.broadcastMessage("onRightMouseUp");
                }
        }
}
...skiped....

при запуске получаю ошибку:
Цитата:

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 11: There is no method with the name 'broadcastMessage'.
Mouse.broadcastMessage("onRightMouseDown");
Че за фигня? Видел кучу исходников, где такое прокатывало... А тут вдруг на-те...
Версия флеша: Flash 8

bbexp 23.03.2007 18:52

Не до конца досматривали исходники видать.

У класса Mouse нет метода broadcastMessage, о чем и было сказано компилятором.
Это метод AsBroadcaster - а.
Почитайте про него в документации, в восьмерке он уже документирован.

да и потом, выкиньте в корзину этот эсНейтив.
вот класс, написанный Silin-ом. Отслеживает и мышей и комбинации клавиш.

http://www.silin.fatal.ru/AS2/KeyEve...atcher.as.html

dmitriy_rsl 23.03.2007 22:41

Цитата:

Сообщение от bbexp
Не до конца досматривали исходники видать.

У класса Mouse нет метода broadcastMessage, о чем и было сказано компилятором.
Это метод AsBroadcaster - а.
Почитайте про него в документации, в восьмерке он уже документирован.

Та я видел в хелпе, что там нету такого метода, но в куче исходников встречалось его использование (например реализация даблклика, которая описана в факе на этом форуме). Как тогда то, что в этих исходниках описано работает????

вот например тут есть такое:
http://www.flasher.ru/forum/showthread.php?t=62551

Я уже думал, что это спрятанный метод... пытался его через ASSetPropFlags открывать - нефига. Пытался делать AsBroadcaster.initialize(Mouse) - тоже нефига.

dmitriy_rsl 23.03.2007 22:58

Я хочу сделать нечто универсальное, чтобы и в других программах потом использовать. А расширение функциональности Mouse - как нельзя лучше для этого подходит. поэтому broadcastMessage у Mouse - ох как нужен.
У меня сейчас стоит задача реализовать не только правую кнопку мыши и дабл-клик левой кнопкой, но и дабл-клик правой кнопкой мыши.

dmitriy_rsl 23.03.2007 23:05

Вот еще одна ссылка:
http://flasher.ru/articles/view/%7Btutors.pg=75%7D

Тут есть и Mouse.broadcastMessage и ASBroadcaster.initialize(Mouse)
Но ничего из этого в реальности не работает, после AsBroadcaster.initialize(Mouse) казалось-бы у Mouse должен появиться метод broadcastMessage (хотя не факт, что он будет корректно работать), но ничего подобного - по прежнему ошибка. Такое чувство, что этот метод там есть, но каким-то образом скрыт (и ASSetPropFlags - его не открывает).

iNils 24.03.2007 00:00

Код:

Mouse["broadcastMessage"]("onRightMouseDown");

dmitriy_rsl 26.03.2007 10:26

Цитата:

Сообщение от iNils
Код:

Mouse["broadcastMessage"]("onRightMouseDown");

О, спасибо - вроде работает. Хотели заныкать метод, хе-хе...

iNils 26.03.2007 11:29

Его ни кто не прятал, если метод не указан здесь
Код:

intrinsic class Mouse
{
        static function addListener(listener:Object):Void;
        static function hide():Number;
        static function removeListener(listener:Object):Boolean;
        static function show():Number;
}

если класс не динамический, то всегда можно достучаться до метода или свойства через ["key_word"]

etc 26.03.2007 12:11

Это обман компилятора, тем не менее.
Не вижу смысла вообще заставлять конкретно мышиный класс слать событие.


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

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