as3.0键盘事件问题,可能涉及一些as的机理问题

我简化了一下问题,比如我有3个帧,标为1,2,3帧,在第1帧上stage有一个鼠标事件,单击跳转到第二帧;在第二帧上stage有两个事件,一个鼠标事件,单击跳转到第三帧,... 我简化了一下问题,比如我有3个帧,标为1,2,3帧,在第1帧上stage有一个鼠标事件,单击跳转到第二帧;在第二帧上stage有两个事件,一个鼠标事件,单击跳转到第三帧,一个键盘事件,按下backspace跳到第一帧;在第三帧上stage有一个事件,按下backspace跳转到第一帧。现在进行如下操作,在第一帧上单击跳转到第二帧,再单击跳转到第三帧,再按下backspace返回第二帧,问题出现了,当我在第二帧按下backspace却不能跳转到第一帧了,这是怎么回事,我试过如果把第二帧的键盘事件改为按下其他键(比如escape)就能正常跳转了,是不是一个按键不能触发不同的函数,不然就会打架?求懂as3.0机理的朋友解答下,有什么解决办法没?代码如下
第一帧

stop();
stage.addEventListener(MouseEvent.CLICK,Play);
function Play(e:MouseEvent){
play();
}
第二帧

stop();
stage.focus=stage;
stage.addEventListener(KeyboardEvent.KEY_DOWN,back1);
stage.addEventListener(MouseEvent.CLICK,Play);
function back1(e:KeyboardEvent){
switch(e.keyCode){
case Keyboard.BACKSPACE:
gotoAndStop(1);
break;
default:
break;
}
}
第三帧

stop();
stage.focus=stage;
stage.addEventListener(KeyboardEvent.KEY_DOWN,back2);
function back2(e:KeyboardEvent){
switch(e.keyCode){
case Keyboard.BACKSPACE:
gotoAndStop(2);
break;
default:
break;
}
}
展开
 我来答
lianleel8
2012-09-29 · 超过24用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:64.8万
展开全部
呃,说起来是很简单的问题,主要我有个习惯,添加一个监听后,需要在适宜的时机将监听移除,你的键盘监听事件在执行后,把它移除就行了,我大概改了一下,你试试吧
第一帧:
import flash.events.MouseEvent;
stop();
stage.addEventListener(MouseEvent.CLICK,Play);
function Play(e:MouseEvent)
{
play();
}

第二帧:
import flash.events.MouseEvent;import flash.events.KeyboardEvent;
stop();
stage.focus=stage;
stage.addEventListener(KeyboardEvent.KEY_DOWN,back1);
stage.addEventListener(MouseEvent.CLICK,Play);
function back1(e:KeyboardEvent)
{
switch(e.keyCode)
{
case 32:
gotoAndStop(1);
stage.removeEventListener(KeyboardEvent.KEY_DOWN,back1);
break;
}
}

第三帧:
import flash.events.KeyboardEvent;
stop();
stage.focus=stage;
stage.addEventListener(KeyboardEvent.KEY_DOWN,back2);
function back2(e:KeyboardEvent)
{
switch(e.keyCode)
{
case 32:
gotoAndStop(2);
stage.removeEventListener(KeyboardEvent.KEY_DOWN,back2);
break;
}
}

如果还有问题再问吧 ,说白了,你在第二次点击空格的时候,两个监听都监听到了,于是不知道执行哪一个
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
滴社x谢白
2012-09-26
知道答主
回答量:15
采纳率:0%
帮助的人:12.4万
展开全部
将stage.focus=stage改为stage.focus=this
我也不知道为什么是这样改的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不远侠
2012-09-25 · 超过10用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:17.8万
展开全部
是作用域及注册侦听事件的问题,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
web民工
2012-09-25 · TA获得超过469个赞
知道小有建树答主
回答量:959
采纳率:0%
帮助的人:407万
展开全部
是不是在侦听函数执行后需要清楚事件侦听呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式