이전 질문은 저를 생각하게했습니다. MouseEvent.CLICK를 시뮬레이트하여 MOUSE_DOWN 다음에 MOUSE_UP을 먼저 실행하여 해고 당할 수 있습니까?마우스를 사용하여 마우스 클릭을 시뮬레이션 할 수 있습니까?
Adobe의 doumentation에 따라. "... 클릭 이벤트가 발생하려면이 일련의 이벤트를 항상 발생 순서대로 따라야합니다 : mouseDown 이벤트와 mouseUp이 두 이벤트에 대해 대상 개체가 동일해야하며, 그렇지 않으면 click 이벤트는 발생하지 않습니다. mouseDown 또는 mouseUp 이벤트 사이에서 언제든지 다른 많은 마우스 이벤트가 발생할 수 있으며 click 이벤트는 계속 발생합니다. " 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 ('TWO을 얻어야한다.
네가 맞아. MOUSE_DUP 다음에 MOUSE_UP이 표시 될 때 새 CLICK 이벤트를 만들지 않습니다 (아마 이벤트 루프 코드에서 그렇게하는 것이 이상하고 마우스 입력 처리 코드에서 이벤트를 생성하는 것이 훨씬 자연 스럽기 때문일 수 있습니다). 수동으로 세 가지 모두 실행해야합니다. 나는이 문서가 일반적인 마우스 이벤트를 언급하고 있다고 생각한다. 수동으로 실행하면 이벤트 주문을 시행하는 특수 코드가있는 것 같지 않습니다. – Cameron
설명서가 혼란스러운 원인과 결과라고 생각합니다. 클릭 이벤트는 마우스에서 아래로 마우스를 올려 놓은 상태에서 동일한 객체에 생성됩니다. 결과적으로 세 가지 ActionScript 이벤트가 모두 전달됩니다. 런타임은 ActionScript 이벤트 자체를 사용하여 click 이벤트를 전달할지 여부를 결정하지 않습니다. –