Можно ли имитировать щелчок мышью, используя события «вниз и вверх»?

Предыдущий вопрос заставил меня задуматься. Можно ли смоделировать MouseEvent.CLICK для увольнения, просто запустив сначала MOUSE_DOWN, а затем MOUSE_UP.

Согласно документации Adobe. "... Чтобы произошло событие щелчка, оно всегда должно следовать за этой серией событий в порядке возникновения: событие mouseDown, затем mouseUp. Целевой объект должен быть идентичным для обоих этих событий; в противном случае событие щелчка не произойдет. Любое количество других событий мыши может произойти в любое время между событиями mouseDown или mouseUp; событие щелчка все еще происходит. " http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/InteractiveObject.html#event:click

Мои тесты показывают, что событие CLICK НЕ создается из очереди событий ActionScript 3. Или что-то не так с кодом?

См .:

package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;

[SWF(backgroundColor="0xFFFFFF", frameRate="30", width="800", height="600")]

public class Test extends Sprite
{
    private var spr:Sprite = new Sprite();
    public function Test()
    {
        trace("Test()");
        this.addEventListener(Event.ADDED_TO_STAGE,init);
    }
    public function init(e:Event):void
    {
        trace("init()");
        spr.graphics.beginFill(0xFF0000);
        spr.graphics.drawRect(0,0,200,80);
        spr.graphics.endFill();
        addChild(spr);
        addEventListener(Event.ENTER_FRAME, onEnterFrame);
        spr.addEventListener(MouseEvent.CLICK, onClick);
    }
    private var tick:int = 0;
    private function onEnterFrame(e:Event):void
    {
        if (tick == 1) spr.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN,true,false));
        if (tick == 2) spr.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP,true,false));
        if (tick == 3) spr.dispatchEvent(new MouseEvent(MouseEvent.CLICK,true,false));
        tick++;
    }
    private function onClick(e:MouseEvent):void
    {
        trace("onClick() MouseEvent.CLICK dispatched"); 
    }
}
}

Я должен получить ДВА события 'onClick ()' вместо одного.

5
задан eLouai 24 September 2011 в 20:21
поделиться