Cocos2D ccTouchesMoved Sprite和Objects

时间:2011-09-22 19:32:05

标签: ios cocos2d-iphone

我一直在努力解决这个问题。我试图避免为我正在尝试创建的对象设置多个类。基本上我有一个'Letter'类,有一个字母属性。当我初始化对象时,我将字母类型设置为A,B,C ...我在循环中完成所有操作。一切似乎都很好。

问题是,当我触发ccTouchesMoved事件时,我想知道我是否正在移动A或B等类型的Letter对象。我无法想出这个。

这里有一些片段来展示我在做什么:

Letter Letter

@implementation Letter

- (id)init {
    if ((self = [super init])) {
        gamePieceType = kLetterNotAssigned;
    }

    return self;
}

我的图层初始

for (int x=0; x < NUMBER_OF_ITEMS; x++) {
    int randomX = random() % 1024;
    [self createPuzzlePieceAtLocation:ccp(randomX, 600) withPiece:x];
 }

createPuzzlePieceAtLocation方法

- (void)createPuzzlePieceAtLocation:(CGPoint)location 
                                withPiece:(int)tagValue { 

switch (tagValue) {
case 1:
        letterSprite = [[Letter alloc] initWithSpriteFrameName:@"upper_a.png"];
        letterSprite.gamePieceType = kLetterA;
        break;
...
}
[self createBodyAtLocation:location forSprite:letterSprite isBox:FALSE];
[sceneSpriteBatchNode addChild:letterSprite];

有什么想法?我在ccTouchesMoved中获取了touchLocation但是如何获取该对象?

1 个答案:

答案 0 :(得分:0)

你必须确定被触摸的字母。

最简单的方法是遍历所有字母(在创建时将它们放入数组中)并检查接受触摸的字母。

最快的方法是使用物理引擎进行快速搜索(Box2D和chipmunk引擎随附cocos2d)。

确定信件后,只需检查其类型