Una domanda precedente mi ha fatto pensare. È possibile simulare un MouseEvent.CLICK per essere licenziato semplicemente sparando prima un MOUSE_DOWN seguito da un MOUSE_UP.È possibile SIMULARE un clic del mouse usando un mouse su e giù per gli eventi?
Come per la doumentation di Adobe. "... Perché si verifichi un evento click, deve sempre seguire questa serie di eventi nell'ordine in cui si verifica: evento mouseDown, quindi mouseUp. L'oggetto target deve essere identico per entrambi gli eventi, altrimenti l'evento click non Si può verificare qualsiasi numero di altri eventi del mouse in qualsiasi momento tra gli eventi mouseDown o mouseUp, ma l'evento click si verifica ancora. " http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/InteractiveObject.html#event:click
Dai miei test mostra che l'evento CLICK NON è costruito dalla coda di eventi di ActionScript 3. O c'è qualcosa che non va nel codice?
See:
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");
}
}
}
dovrei ottenere due 'onclick()' eventi invece di uno.
Hai ragione. Non sta creando un nuovo evento CLICK quando vede un MOUSE_DOWN seguito da un MOUSE_UP (probabilmente perché sarebbe molto strano farlo nel codice del ciclo degli eventi e molto più naturale generare l'evento nel codice di elaborazione dell'ingresso del mouse). Dovrai sparare tutti e tre manualmente. Penso che la documentazione si riferisse a eventi regolari del mouse; Sparando manualmente, è improbabile che ci sia un codice speciale che impone l'ordine dell'evento. – Cameron
Penso che la documentazione confonda causa ed effetto un po '. Un evento click viene generato dal mouse giù + mouse sullo stesso oggetto. Di conseguenza, tutti e tre gli eventi ActionScript vengono inviati. Il runtime non utilizza gli stessi eventi ActionScript per determinare se inviare un evento click. –