JS3.0RC如何在自定义事件的回调里面能够操作自己的成员属性的成员函数

我使用的是cocos2d-js 3.0RC引擎
文档和Sample里面可以看到,如果在event触发的函数内要调用自己类的方法需要使用getCurrentTarget获取自己的实例而不能直接使用this,
这在keyboard、mouse和touch事件中都可以使用,
:2:然后问题来了,我在教程里参考那个之前使用cocos2d-html制作的横版过关,将其移植到cocos2d-js上,这过程中我遇到一个问题,
那就是我想重做joypad虚拟手柄类,因此使用
cc.eventManager.addCustomListener(“actionJoypadStart”, this.actionJoypadStart);
cc.eventManager.addCustomListener(“actionJoypadUpdate”, this.actionJoypadUpdate);
cc.eventManager.addCustomListener(“actionJoypadEnded”, this.actionJoypadEnded);
这样添加自定义事件监听而不是采用以前将自己的实例传给joypad的方法,
joypad中使用cc.eventManager.dispatchCustomEvent(“actionJoypadStart”, event.getCurrentTarget()._pRotation);来将旋转角度传给需要监听的类
这样在类中的actionJoypadStart方法加入 cc.log(“actionJoypadUpdate:”+ event.getUserData());就能看到传入的角度
原作者的代码中,是如下控制角色移动
actionJoypadStart:function(degrees){
this.mHero.runWithDegrees(degrees);
},
那么根据对应文档的方法,我修改为以下函数
actionJoypadStart:function(event){
event.getCurrentTarget().mHero.runWithDegrees(event.getUserData());
},
但是系统缺提示GameLayer.js:89:TypeError: event.getCurrentTarget(…) is null,似乎是没有找到这个方法

相对的我在按键事件中,却能正常执行
if( ‘keyboard’ in cc.sys.capabilities ) { //键盘监听
cc.eventManager.addListener({
event: cc.EventListener.KEYBOARD,
onKeyPressed:function(key, event) {
//cc.log(“Key down:” + key);
if(key == 56)
{
cc.log(“onKeyPressed:”+event.getType() );
//event.getCurrentTarget().actionJoypadStart2(degrees);
event.getCurrentTarget().mHero.runWithDegrees(90);
}
},
onKeyReleased:function(key, event) {
//cc.log(“Key up:” + key);
event.getCurrentTarget().mHero.idle();
}
}, this);
} else {
cc.log(“KEYBOARD Not supported”);
}
这里的参数event理论上应该都是继承字cc.event不应该找不到方法,有谁能帮助我一下呢?
另外代码内调用getType就都能有返回值。
如何在自定义事件的回调里面能够操作自己的成员属性的成员函数

最后吐槽下快速发帖没找到在哪输入验证码

:6:另外使用this.mHero.runWithDegrees(degrees);,则会提示TypeError: this.mHero is undefined
而实际上我在场景类里,使用下面代码已经初始化了
/ /添加英雄
this.mHero = new Hero();
// 添加机器人
//this.mRobot = new Robot();

        var characters = cc.Node.create();
        characters.addChild(this.mHero);
        //characters.addChild(this.mRobot);
        this.addChild(characters);

现在唯一能想到的就是使用公共变量

:12:希望官方尽快回复一下,谢谢

有两个方法
1.var self =this;
event里面用self就行

2.event里面用 event.getTarget()

谢谢,一会LZ试试,那么论坛有没有相关的QQ群呢,想加入一起交流啊,有问题也方便请教:2:

:ReferenceError: mHero is not defined
:6: 第2个方法都试过了还是不行啊getTarget出来的结果是null
另外第一个方法var self =this;公共变量的话。。那其他继承它的类怎么办,这个类还只是一个战斗类,我的设计是准备其他所有的战斗场景都继承自它,用公共变量的话,感觉不太妥