Cocos2d iphone 如何取消cocos2d中正在进行的单触式事件

Cocos2d iphone 如何取消cocos2d中正在进行的单触式事件,cocos2d-iphone,Cocos2d Iphone,我正在制作一个游戏,用户正在拖动一个对象。当用户仍在尝试拖动对象时发生事件时,我希望停止移动对象。有办法做到这一点吗?基本上取消当前正在进行的触摸,同时不影响可能发生的其他触摸事件,因为这是一个多触摸应用程序 我正在使用cocos2dv1.1.0,并且正在使用ccToucheSBegind和ccTouchesMoved 感谢您的建议。为什么不在拖动的对象上加一个标志呢 - (void)ccTouchesBegan... { touchedObject.canDrag = YES; }

我正在制作一个游戏,用户正在拖动一个对象。当用户仍在尝试拖动对象时发生事件时,我希望停止移动对象。有办法做到这一点吗?基本上取消当前正在进行的触摸,同时不影响可能发生的其他触摸事件,因为这是一个多触摸应用程序

我正在使用cocos2dv1.1.0,并且正在使用ccToucheSBegind和ccTouchesMoved


感谢您的建议。

为什么不在拖动的对象上加一个标志呢

- (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感谢您的建议。我不知道这是否是我的特殊天性,但这感觉像是一个修补过的解决方案,因为一旦阻力停止,我也想采取行动。根据您的建议,我需要为该操作添加另一个属性,以便在看起来我应该能够取消触摸时设置该属性。别误会我的意思,在没有其他任何东西的情况下,我将不得不按照你的建议去做,并且在等待回复的时候,我已经想出了相同的补丁。所以,谢谢你的指点,最终这可能是我们的全部,但我希望有更干净的方法?