Egret社区

egret 键盘事件

2014-6-12 11:29
1072222
egret中怎么处理键盘事件,好像没有找到。而且egret中的对象不能addEventListener("keydown",onkeydown);如果用document.addEventListener("keydown",onkeydown);

那么onkeydown中的this则为document,不能引用到同类中的变量或原件。求解决方案
分享到 :
3 人收藏

22 个回复

倒序浏览
Wander  官方团队 | 2014-6-12 11:37:49
本帖最后由 Wander 于 2014-6-12 11:40 编辑

egret目前确实不支持键盘事件,对于你的疑问,有以下的规避方法
  1. class A {
  2.    
  3.     public b(){
  4.         
  5.         var that = this;
  6.         document.addEventListener("keydown",function(){
  7.             
  8.             console.log (that) //这里的that就是this对象
  9.         })
  10.         
  11.     }
  12.    
  13.    
  14.    
  15. }   
复制代码



vicyan  初学乍练 | 2014-6-12 11:54:06
Wander 发表于 2014-6-12 11:37
egret目前确实不支持键盘事件,对于你的疑问,有以下的规避方法

var that = this;
        document.addEventListener("keydown",function(){
            
            console.log (that) //这里的that就是this对象
        })
嗯,解决了。只是这样function只能定义写在里面了!
Wander  官方团队 | 2014-6-12 11:55:47
vicyan 发表于 2014-6-12 11:54
var that = this;
        document.addEventListener("keydown",function(){
            

是的,对AS3开发者来说这个做法很奇葩,但是这其实是JavaScript的一种常见技巧
vicyan  初学乍练 | 2014-6-12 12:05:34
Wander 发表于 2014-6-12 11:55
是的,对AS3开发者来说这个做法很奇葩,但是这其实是JavaScript的一种常见技巧 ...

var src = this;
document.addEventListener("keydown",function onkeydown(event:KeyboardEvent){src.onkeyDown(event);});
这样写算不算有强迫症!!!
f111fei  官方团队 | 2014-6-19 15:04:09
Wander 发表于 2014-6-12 11:37
egret目前确实不支持键盘事件,对于你的疑问,有以下的规避方法

测试了下遇到需要用到keyCode的时候这样写不兼容火狐,应该和5楼一样function加一个参数  
function(event){
    event.keyCode
}
Kevin  登堂入室 | 2014-8-21 14:13:53
欧耶,用的闭包的方法
gamedaybyday  初窥堂奥 | 2015-8-9 00:21:20
怎么移除监听。。。。= =
Channing  圆转纯熟 | 2015-8-10 09:56:18
wujinhong  圆转纯熟 | 2015-8-18 09:44:55
Wander 发表于 2014-6-12 11:37
egret目前确实不支持键盘事件,对于你的疑问,有以下的规避方法

在runtime版本下怎么获取键盘事件?

点评

同问。你有答案了吗  发表于 2015-11-13 22:23
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

vicyan

初学乍练

积分: 帖子: 精华:

楼主热帖

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部