Определите действие, которое вы хотите выполнить, в данном случае ... ScaleBy (как вы хотите, относительно текущего масштаба, а не окончательного масштаба). Когда касание получено, повторяйте это действие до тех пор, пока касание не закончится, а затем остановите действие.
Если вы хотите реализовать верхние границы, чтобы элемент не выходил за пределы определенной точки, тогда ScaleBy будет ScaleTo с верхней границей, установленной в качестве целевого масштаба. Однако вам придётся поиграться с продолжительностью, чтобы получить ощущение, что вы ищете. Слишком быстро, слишком медленно и т. Д ... это зависит от вас.
- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
UITouch* touch = [touches anyObject];
CGPoint location = [[[Director sharedDirector] convertCoordinate: touch.location];
CGRect particularSpriteRect = CGMakeRect(particularSprite.position.x, particularSprite.position.y, particularSprite.contentSize.width, particularSprite.contentSize.height);
if(CGRectContainsPoint(particularSpriteRect, location)) {
// scale by 1.25 every 0.25 second while finger touching
id a = [RepeatForever actionWithAction: [ScaleBy actionWithDuration: 0.25 scale: 1.25];
[a setTag: YOUR_TAG];
[particularSprite runAction: a];
return kEventHandled;
}
}
- (void)ccTouchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
// code to determine correct finger/touch releases omitted
[particularSprite stopActionByTag: YOUR_TAG];
}