AS3.0求助,关于键盘事件
我想要通过对stage侦听键盘按键从而得到对舞台上一个元件操作,一下暂且用一个小球来代替我想操作的元件:varball:Shape=newShape();ball.gra...
我想要通过对stage 侦听键盘按键从而得到对舞台上一个元件操作,一下暂且用一个小球来代替我想操作的元件:
var ball:Shape = new Shape();
ball.graphics.beginFill(0xFF0000);
ball.graphics.drawCircle(0, 0, 30);
ball.graphics.endFill();
addChild(ball);
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownListener);
ball.addEventListener("myCustomEvent", myCustomEventListener);
function KeyDownListener(event:KeyboardEvent):void
{
trace("a");
if (event.keyCode == Keyboard.RIGHT)
{
trace("b");
dispatchEvent(new Event("myCustomEvent"));
}
}
function myCustomEventListener(event:Event):void
{
trace("c");
var ball:MovieClip = event.target as MovieClip;
ball.x++ ;
ball.y++ ;
}
运行结果是,按下方向键之后,a b 能输出,但是 c 没有输出,球也没有运动,是否是因为 myCustomEvent事件没有被dispatch?
求大神解答啊!关于dispatch很不熟悉,不知道怎么用才可以。 展开
var ball:Shape = new Shape();
ball.graphics.beginFill(0xFF0000);
ball.graphics.drawCircle(0, 0, 30);
ball.graphics.endFill();
addChild(ball);
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownListener);
ball.addEventListener("myCustomEvent", myCustomEventListener);
function KeyDownListener(event:KeyboardEvent):void
{
trace("a");
if (event.keyCode == Keyboard.RIGHT)
{
trace("b");
dispatchEvent(new Event("myCustomEvent"));
}
}
function myCustomEventListener(event:Event):void
{
trace("c");
var ball:MovieClip = event.target as MovieClip;
ball.x++ ;
ball.y++ ;
}
运行结果是,按下方向键之后,a b 能输出,但是 c 没有输出,球也没有运动,是否是因为 myCustomEvent事件没有被dispatch?
求大神解答啊!关于dispatch很不熟悉,不知道怎么用才可以。 展开
1个回答
展开全部
在ball的事件监听前先add到stage
this.addeventlistener(EVENT.ADDed_TO_STAGE,add)
function add(evt:EVENT=null):void{
ball.addEventListener("myCustomEvent", myCustomEventListener);
}
this.addeventlistener(EVENT.ADDed_TO_STAGE,add)
function add(evt:EVENT=null):void{
ball.addEventListener("myCustomEvent", myCustomEventListener);
}
更多追问追答
追问
ball不应该是一直都在stage上的吗?求大神细解啊。。。
追答
上面方法可能也不行,你这问题应该是没有发出事件,总之lz先试试看看行不行,之后再进行解释。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询