我一直在努力解决这个问题。我试图避免为我正在尝试创建的对象设置多个类。基本上我有一个'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但是如何获取该对象?
答案 0 :(得分:0)
你必须确定被触摸的字母。
最简单的方法是遍历所有字母(在创建时将它们放入数组中)并检查接受触摸的字母。
最快的方法是使用物理引擎进行快速搜索(Box2D和chipmunk引擎随附cocos2d)。
确定信件后,只需检查其类型