多点触摸..需要帮助cctouchesended

时间:2011-04-23 03:04:46

标签: cocoa-touch cocos2d-iphone

我的游戏几乎完成了我的多点触控代码,但我又遇到了一个问题。这是在Cocos2d btw:)

中完成的

玩家左侧有一个dpad,右侧有一个按钮,如果我按住dpads并按住跳跃按钮,它可以正常工作,这样他就可以向右跑并跳跃。

问题是,一旦我将手指从跳跃按钮上移开,所有操作都会停止,所以我必须抬起并再次按下我的手指在dpad上...

这是我的cctouchesended代码

-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

////when the user has stopped touching the screen set the variables 
     ////back to false to stop its movement////

//self.myTouch = nil;
for (UITouch *touch in touches)
{
    if (moveRight == TRUE) {
    [player stopAction:RunForward];

    }
    if (moveLeft == TRUE) {
    [player stopAction:RunBackwards];

    }
    moveLeft = FALSE;
    moveRight = FALSE;
 //  jump = FALSE;
}



}

2 个答案:

答案 0 :(得分:0)

最好将逻辑映射到2个按钮。或者至少是为了跳跃。 当前代码的问题在于您没有检查您抬起哪根手指。您可以进行检查,如果结束的触摸位于屏幕左侧,则停止移动。

此外,您无需将BOOL值与TRUE进行比较。只是做,“如果(moveRight)”。它好多了

答案 1 :(得分:0)

您需要继续引用HASH(touch.hash)并保存CCTouchesBegan

然后在你现在的函数(发行版)中检查哪个哈希已被释放。

这样:

  1. 在ccTouchesBegan函数中,检查按下了哪个按钮:

    if(CCRectContainsPoint(sprite1.boundingbox,touchlocation)) {    rightSideButtonHash = touch.hash; )

  2. 在发布中你检查touch.hash对着rightSideButtonHash,你知道它是否是那个触摸!