Cocos2D ccTouchesMoved Спрайты и объекты - PullRequest
0 голосов
/ 22 сентября 2011

Я немного боролся с этим. Я пытаюсь избежать нескольких классов для объектов, которые я пытаюсь создать. По сути, у меня есть класс 'Letter', который имеет свойство letter. Когда я инициализирую объект, я устанавливаю тип буквы A, B, C ... Я делаю все это в цикле. Все вроде нормально.

Проблема в том, что когда я запускаю событие ccTouchesMoved, мне хотелось бы знать, перемещаю ли я объект типа Letter или B и т. Д.

Вот несколько фрагментов, чтобы показать, что я делаю:

Письмо класса

@implementation Letter

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

    return self;
}

My Layer Init

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];

Есть мысли? Я получаю touchLocation в ccTouchesMoved, но как мне получить объект?

1 Ответ

0 голосов
/ 23 сентября 2011

Вы должны определить, какая буква была затронута.

Самый простой способ - перебирать все ваши буквы (при создании их помещать в массив) и проверять наличие букв, поддерживающих касание.

Самый быстрый способ - использовать физический движок для быстрого поиска (Box2D и бурундук идут с cocos2d).

Когда буква определена, просто проверьте ее тип

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...