在actionscript 3中(as3)调用stage.width和stage.stageWidth有什么区别
这是我记得我过去很困惑的事情(Adobe的api文档是混淆的艺术形式:)).以为我应该在stackoverflow上发布它.
之前的一个问题让我思考.是否可以通过首先触发MOUSE_DOWN然后触发MOUSE_UP来模拟MouseEvent.CLICK被触发.
根据Adobe的推文."...对于要发生的点击事件,它必须始终按照发生的顺序跟随这一系列事件: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++; …Run Code Online (Sandbox Code Playgroud)