Повторно инициализируйте ccMotionStreak для каждого нового прикосновения - PullRequest
4 голосов
/ 11 августа 2011

Я пытаюсь отследить движение пальца пользователя на экране для моей игры для iPhone / cocos2d.

Пока что я могу сделать это, используя ccMotionStreak, объявленный в интерфейсе моего GameLayer и инициализированный в моемметод init.Чтобы нарисовать касание пользователя, я добавил следующий код в touch.Moved:

UITouch *touch = [touches anyObject];
[streak setPosition:[self convertTouchToNodeSpace:touch]];

Это работает, пока я не подниму палец вверх и не сделаю новое движение касанием по экрану.Вместо того, чтобы рисовать новую полосу, моя игра соединяет конец старой полосы с началом моего нового пролистывания и продолжает ту же полосу.Это не то, что я хочу.

Есть ли способ сбросить мой ccMotionStreak?Если нет, то очевидным решением будет создание новой полосы при каждом новом касании (и удаление старого), но я не могу заставить это работать.Когда я перемещаю код инициализации моей серии из метода init в touchesBegan, эта строка больше не отображается вообще.

Я предполагаю, что это должно быть базовым для достижения, но я просто не могу понять,вне синтаксиса.Я все еще изучаю ObjC / cocos2d.Может кто-нибудь помочь?

Вот как я инициализирую свою серию в моем методе инициализации:

streak = [CCMotionStreak streakWithFade:3.0 minSeg:1 image:@"streak.png" width:4 length:8 color:ccc4(128,128,128,255)];
[self addChild:streak];

1 Ответ

0 голосов
/ 12 августа 2011

Вы удалили / отпустили старую полосу на ccTouchesEnded и ccTouchesCancelled?

// in ccTouchesBegan
streak = [CCMotionStreak streakWithFade:3.0 minSeg:1 image:@"streak.png" width:4 length:8 color:ccc4(128,128,128,255)];
[streak setPosition:location];
[self addChild:streak];

// in ccTouchesEnded and ccTouchesCancelled
if (streak) {
    [streak removeFromParentAndCleanup:YES];
    streak = NULL;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...