Просмотр полной версии : Mouse.broadcastMessage
dmitriy_rsl
23.03.2007, 18:42
Пишу обработчик для правой кнопки мыши:
_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
Не до конца досматривали исходники видать.
У класса Mouse нет метода broadcastMessage, о чем и было сказано компилятором.
Это метод AsBroadcaster - а.
Почитайте про него в документации, в восьмерке он уже документирован.
да и потом, выкиньте в корзину этот эсНейтив.
вот класс, написанный Silin-ом. Отслеживает и мышей и комбинации клавиш.
http://www.silin.fatal.ru/AS2/KeyEventDispatcher.as.html
dmitriy_rsl
23.03.2007, 22:41
Не до конца досматривали исходники видать.
У класса 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 - его не открывает).
Mouse["broadcastMessage"]("onRightMouseDown");
dmitriy_rsl
26.03.2007, 10:26
Mouse["broadcastMessage"]("onRightMouseDown");
О, спасибо - вроде работает. Хотели заныкать метод, хе-хе...
Его ни кто не прятал, если метод не указан здесь
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"]
Это обман компилятора, тем не менее.
Не вижу смысла вообще заставлять конкретно мышиный класс слать событие.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.