记一笔:As3监听键盘组合键如:Ctrl+Z,Ctrl+Y等

最近项目改版添加了关于白板的redo/undo功能,其中一个需求就是要能通过键盘的组合键Ctrl+z,Ctrl+y来实现undo、redo功能。

开始以为很简单,且as3的KeyboardEvent事件对象中有e.ctrlKey,e.shiftKey来判断是否按下了Ctrl,Shift键,但事情不是这么简单。

 

我们的Flash一般都是在浏览器中运行的,特别是在IE里面,如果你按下Ctrl+Z,进行撤销时或许第一次Flash能够监听到,但后面的就监听不到了,浏览器(IE)截取了键盘事件,致使Flash中的监听无效,准确的说是根本没有按键事件发出。

 

在闪吧有个涂鸦办,原来里面的undo,redo用的是Shift+Z和Shift+Y,不知道也是不是遇到上面的问题无法解决才用Shift呢!

 

不过这个问题在独立的Flash播放器和火狐浏览器中没有出现,他们都能正确监听处理Ctrl+Z,Ctrl+Y,但其他浏览器如IE就不行,IE能正确处理Ctrl+Y,再其他的浏览器我也没测试过,估计也差不多~~有兴趣的可以测试一下!

 

如果一定要用键盘来对应undo/redo,建议用Shift+Z,Shift+Y替换常用的Ctrl+Z,Ctrl+Y,就像闪吧的涂鸦板!

posted @ 2010-06-03 21:05  ywxgod  阅读(2846)  评论(0编辑  收藏  举报