Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Можно ли в АС3 отследить нажатие колесика мыши? (http://www.flasher.ru/forum/showthread.php?t=125631)

Smirnov48 28.05.2009 18:00

Можно ли в АС3 отследить нажатие колесика мыши?
 
В АС 2 было вот так - Key.isDown(4), но насколько я понял аналога Key.isDown в АС3 не существует. Подскажите, как быть?

fljot 28.05.2009 18:45

Цитата:

Сообщение от Smirnov48 (Сообщение 823958)
но насколько я понял

а как вы понимали?
http://livedocs.adobe.com/flex/2/langref/migration.html поиск по странице isDown

silin 28.05.2009 19:58

>>Подскажите, как быть?
взять на борт as2-флешку, которая отследит нажатие и по LocalConnection доложит

etc 28.05.2009 20:36

silin, много времени потеряется после нажатия. Как минимум один кадр.

silin 28.05.2009 21:56

да по мне так и черт бы с ним, с этим кадром..
к слову, хотел глянуть сколько теряется, полагая что getTimer() у обоих должен быть от одного начала,
но похоже что getTimer и них разный, потому как получаются сущие копейки по времени: 0..15 мс
смотрел так:
Код AS1/AS2:

//AS2-мувик, следит за средней кнопкой, отправляет "middleMousePress" если нажали
class Dispatcher extends MovieClip
{
        //mtasc entry point
        public static function main(swfRoot:MovieClip):Void
        {
                swfRoot.__proto__ = Dispatcher.prototype;
                //trace(getTimer());
        }
 
        private var _pressed:Boolean = false;
        private var _lc:LocalConnection = new LocalConnection();
        function onEnterFrame()
        {
                if (Key.isDown(4) && !_pressed)
                {
                        _lc.send("middleMouse", "middleMousePress", getTimer());
                }
                _pressed = Key.isDown(4);
        }
}

Код AS3:

package 
{
        import flash.display.*;
        import flash.net.LocalConnection;
        import flash.utils.getTimer;
 
        //LC, ждет от AS2-флешки вызова middleMousePress
        public class MiddleButTest extends Sprite
        {
                private var _lc:LocalConnection = new LocalConnection();
 
                [Embed(source="dispatcher.swf",  mimeType="application/x-shockwave-flash")]
                private var _dispatcherSWF:Class;
                private var _dispatcher:AVM1Movie = new _dispatcherSWF() as AVM1Movie;
 
                public function MiddleButTest():void
                {
                        _lc.client = this;
                        _lc.connect("middleMouse");
                }
 
                public function middleMousePress(time:int ):void
                {
                        trace("MIDDLE_MOUSE, dt: "+(time-getTimer()));
                }
 
        }
 
}


Яски 28.05.2009 22:42

При внедрении флешки, внедренная флешка создается на кадр позже. Тут нужно синхронизировать как-то по-другому.

silin 28.05.2009 23:02

getTimer : Returns the number of milliseconds that have elapsed since Flash Player was initialized

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


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

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