iphone - How to Make UIImageView Framesize Larger Following Collision Detection -


i have 2 uiimageviews named image1 , image2. want is: when image1 , image2 collide, image1 should grow larger( scale animation.) e.g. if image1 collides image2 ten times , image1 should become 10 times bigger.

i try use scale animation , cgrectintersectsrect collision, timer collision image become larger once time , and remains @ size after subsequent collisions.

here code :

-(void)collision {      if(cgrectintersectsrect(imageview.frame,centre.frame)){          scale=scale+1;         imageview.alpha=0.5;          [imageview removefromsuperview];          [uiview beginanimations:nil context:nil];         [uiview setanimationduration:1.0f];         centre.transform = cgaffinetransformscale(centre.transform, scale, scale);         [uiview commitanimations];     } }  - (void)viewdidload {     [super viewdidload];      [nstimer scheduledtimerwithtimeinterval:0.01 target:self selector:@selector(collision) userinfo:nil repeats:yes]; } 

(techzen says -- author made point native french speaker , english bit rough.)

transforms not accumulative e.g. each transform operates on original matrix , not matrix returned last transform. why image1 object transform once , stays there. exact same transform starting @ beginning on , on again.

instead of trying accumulate or sum transforms, need accumulate or sum scale variable. make scale variable property of controller object holds method , progressively increment value make image1 larger.

something like:

-(void)collision {      if(cgrectintersectsrect(imageview.frame,centre.frame)){          self.scale=self.scale+1; // scale no longer local value , increment         imageview.alpha=0.5;          [imageview removefromsuperview];          [uiview beginanimations:nil context:nil];         [uiview setanimationduration:1.0f];         centre.transform = cgaffinetransformscale(centre.transform, scale, scale);         [uiview commitanimations];     } } 

update:

to convert local variable i.e. 1 defined in single method, move definition header (.h) file so:

@implementation myviewcontroller:nsviewcontroller{ //... various definitions } @property nsinteger *scale; 

... in implementation file (.m) add synthesize directive:

@synthesize scale; 

now can use self.scale refer scale property anywhere in class , preserved. each time call:

self.scale=self.scale + 1; 

... value increment , saved available next collision.

each time call collision scale value change 1 e.g.

centre.transform = cgaffinetransformscale(centre.transform, 1, 1); ... centre.transform = cgaffinetransformscale(centre.transform, 2, 2); .... centre.transform = cgaffinetransformscale(centre.transform, 3, 3); //... , on 

... cgaffinetransformscale increasing transform imageview large size.


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -