tags:

views:

1592

answers:

3

I am working on a project where i need to rotate an image by touching it.

It can be rotate faster or slower depending on how the user touches it.

Can you show me some tutorials or how this can be done?

+1  A: 

Place your image within a UIImageView, then either subclass that view and replace touchesBegan:withEvent: or set a delegate for it and implement the same method as a delegate method. This will give you the ability to respond to touch events (the beginning of a touch, in this case, although you can do the same for ending a touch or moving of the finger).

Within this touch handling method, you can implement something similar to what I describe here in order to perform a Core-Animation-enabled rotation of your UIImageView at a given speed. To alter the speed, change the duration property on the animation I provide. As I suggest there, you may want to look into a CAKeyframeAnimation to do a smoother animation with acceleration and deceleration at the beginning and end.

Brad Larson
A: 

An easier way is to set up an NStimer and rotate the transform everytime it fires.

I've some sample code here that coincidentally does something similar:

http://github.com/kailoa/touchsamplecode/tree/master

Kailoa Kadano
A: 

Using Cocos2d, you can't have 'touch enabled' sprites, 'isTouchEnabled' is at the Layer level. You'll have to receive the touch at the layer level, then check the location of the touch against the location of the touchable sprite. The CGRect* functions include a 'rect contains point' which you can pass the touch location to, with the sprite's rect to see if it was 'touched', and which point you could then say [sprite runAction:[Rotate ....]]

David Higgins