Cocos2d iphone 如何取消cocos2d中正在进行的单触式事件
我正在制作一个游戏,用户正在拖动一个对象。当用户仍在尝试拖动对象时发生事件时,我希望停止移动对象。有办法做到这一点吗?基本上取消当前正在进行的触摸,同时不影响可能发生的其他触摸事件,因为这是一个多触摸应用程序 我正在使用cocos2dv1.1.0,并且正在使用ccToucheSBegind和ccTouchesMovedCocos2d iphone 如何取消cocos2d中正在进行的单触式事件,cocos2d-iphone,Cocos2d Iphone,我正在制作一个游戏,用户正在拖动一个对象。当用户仍在尝试拖动对象时发生事件时,我希望停止移动对象。有办法做到这一点吗?基本上取消当前正在进行的触摸,同时不影响可能发生的其他触摸事件,因为这是一个多触摸应用程序 我正在使用cocos2dv1.1.0,并且正在使用ccToucheSBegind和ccTouchesMoved 感谢您的建议。为什么不在拖动的对象上加一个标志呢 - (void)ccTouchesBegan... { touchedObject.canDrag = YES; }
感谢您的建议。为什么不在拖动的对象上加一个标志呢
- (void)ccTouchesBegan...
{
touchedObject.canDrag = YES;
}
- (void)ccTouchesMoved...
{
if (touchedObject.canDrag)
{
//Drag
}
}
- (void)eventThatStopsDrag
{
touchedObject.canDrag = NO;
}
在要取消触摸事件的位置插入以下代码
[[[CCDirector sharedDirector] touchDispatcher] setDispatchEvents:NO];
或者不推荐使用的方法
[[CCTouchDispatcher sharedDispatcher] setDispatchEvents:NO];
如果您使用的是cocos2dx js,那么您可以在main.js中编写此代码 当鼠标光标离开窗口时,它将发送mouseup事件。 在考虑该场景时,它最有帮助,您正在拖动任何精灵,并且希望在光标离开窗口时取消mousemove事件
cc.game.onStart = function{
.......................
.......................
.......................
var prohibition = false;
if( cc.sys.isMobile)
prohibition = true;
var selfPointer = cc.inputManager;
var element = cc._canvas;
element.addEventListener("mouseout", function (event) {
if(prohibition) return;
selfPointer._mousePressed = false;
var pos = selfPointer.getHTMLElementPosition(element);
var location = selfPointer.getPointByEvent(event, pos);
selfPointer.handleTouchesEnd([selfPointer.getTouchByXY(location.x, location.y, pos)]);
var mouseEvent = selfPointer.getMouseEvent(location,pos,cc.EventMouse.UP);
mouseEvent.setButton(event.button);
cc.eventManager.dispatchEvent(mouseEvent);
event.stopPropagation();
event.preventDefault();
});
.......................
.......................
.......................
}
可能是这样的(非选中代码):
void onTouchMoved(触摸*触摸,事件*事件){
...
如果(需要取消){
事件触摸取消事件;
cancelEvent.settouchs({touch});
cancelEvent.setEventCode(EventTouch::EventCode::CANCELLED);
Director::getInstance()->getEventDispatcher()->dispatchEvent(&cancelEvent);
}
}
但是touch仍然存在,活动将会到来Ben感谢您的建议。我不知道这是否是我的特殊天性,但这感觉像是一个修补过的解决方案,因为一旦阻力停止,我也想采取行动。根据您的建议,我需要为该操作添加另一个属性,以便在看起来我应该能够取消触摸时设置该属性。别误会我的意思,在没有其他任何东西的情况下,我将不得不按照你的建议去做,并且在等待回复的时候,我已经想出了相同的补丁。所以,谢谢你的指点,最终这可能是我们的全部,但我希望有更干净的方法?