同一个类的多个对象仅引用其中一个对象

时间:2014-07-09 20:09:09

标签: ios objective-c class cocos2d-iphone spritebuilder

我使用SpriteBuilder为游戏设计关卡。在游戏中,我有一个滑动时移动的块对象。但是,当我在关卡中有多个对象时,每个对象只引用添加的最后一个对象。它们都被初始化为唯一对象,但是当我滑动时,它们不会移动。唯一正常工作的是添加到关卡中的最后一个。

滑动手势在这里。

- (void)didLoadFromCCB {
// Listen for swipe gestures to the right and left
UISwipeGestureRecognizer * swipeRight= [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeRight)];
swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
[[[CCDirector sharedDirector] view] addGestureRecognizer:swipeRight];

UISwipeGestureRecognizer * swipeLeft= [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeLeft)];
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
[[[CCDirector sharedDirector] view] addGestureRecognizer:swipeLeft];
}

这是将错误对象记录为self的滑动方法之一。我还有一个触摸开始方法,正在记录正确的对象。

- (void)swipeRight {

// Only move the object if it is being touched while swiping
CCLOG(@" Swipe right %@", self);
if (self.touched) {
    // Move the object off the screen to the right
    float width = [self parent].contentSizeInPoints.width;
    [self swipeOffScreen:ccp(self.position.x + width, self.position.y)];
}
}

1 个答案:

答案 0 :(得分:0)

我没有使用swipeRight方法,而是将代码移动到touchEnded方法,并在touchMoved中将self.touched设置为true。我认为问题在于UIKit滑动包装和Cocos2D触摸方法之间的区别。