Создайте подкласс CCNode с переменными normalSprite и pressSprite.В инициализаторе добавьте это, чтобы он обрабатывал касания:
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
Добавьте метод с этой подписью для обработки при касании экрана:
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
// Check that touch is within boundaries of this object
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
if (!CGRectContainsPoint(CGRectMake(0, 0, self.boundingBox.size.width, self.boundingBox.size.height), touchLocation)) {
return TRUE;
}
// Switch image
[self removeChild:normalSprite cleanup:NO];
[self addChild:pressedSprite];
return TRUE;
}
Добавьте метод с этой подписьюдля обработки, когда палец уходит:
-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event {
// Switch image back
[self removeChild:pressedSprite cleanup:NO];
[self addChild:normalSprite];
}
Вы также можете добавить ccTouchMoved (все остальное так же, как ccTouchEnded) для обработки ситуаций, когда касание перемещается за пределы объекта и обратно внутрь.