cc.eventManager.addListener({
event:cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: false,
onTouchBegan: this.onTouchBegan,
onTouchMoved: this.onTouchMoved,
onTouchEnded: this.onTouchEnded,
onTouchCancelled: this.onTouchCancelled
}, this);
onTouchBegan:function(touch, event)
{
var pos = touch.getLocation();
var target = event.getCurrentTarget();
var dragIndex = target.getTouchedHandCardIndex(pos);
if(dragIndex < 0)
return false;
target.m_HandCard_Drag_Index = dragIndex;<span style="white-space:pre"> </span>//这2个本来是this方法
target.m_HandCard_Drag_PosY = pos.y;<span style="white-space:pre"> </span><span style="font-family: Arial, Helvetica, sans-serif;">//这2个本来是this方法 但是这里只能用target调用</span><span style="white-space:pre">
</span>
cc.log("Drag Hand card id=" + target.m_HandCard_Drag_Index);
return true;
},
然后翻cocos例子发现了有2种用法可以在事件函数里面用this
第一种
onTouchBegan:this.onTouchZoomOut.bind(this),
cc.eventManager.addListener({
event:cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: true,
onTouchBegan:this.onTouchZoomOut.bind(this),
onTouchEnded:this.onTouchZoomOutEnd.bind(this)
}, this._ZoomOutlabel);
onTouchZoomOut:function(touch, event){
var target = event.getCurrentTarget();
var locationInNode = target.convertToNodeSpace(touch.getLocation());
var s = target.getContentSize();
var rect = cc.rect(0, 0, s.width, s.height);
if(cc.rectContainsPoint(rect, locationInNode)){
this._bZoomOut = true;
return true;
}
return false;
},
onTouchZoomOutEnd:function(touch, event){
this._bZoomOut = false;
},
第二种
用闭包的方式
var self = this;
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
onTouchBegan: function(touch, event){return true;},
onTouchMoved: function(touch, event){
var dx = touch.getDelta().x;
var rot = self._camControlNode.getRotation3D();
rot.y += dx;
self._camControlNode.setRotation3D(rot);
var matrix = self._camNode.getNodeToWorldTransform3D();
var worldPos = cc.math.vec3(matrix[12], matrix[13], matrix[14]);
cc.Camera.getDefaultCamera().setPosition3D(worldPos);
cc.Camera.getDefaultCamera().lookAt(self._camControlNode.getPosition3D());
}
}, this);