我使用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)];
}
}
答案 0 :(得分:0)
我没有使用swipeRight方法,而是将代码移动到touchEnded方法,并在touchMoved中将self.touched设置为true。我认为问题在于UIKit滑动包装和Cocos2D触摸方法之间的区别。