I added the following log statement to touchesBegan and touchesMoved:
NSLog(@"In touchesBegan count =%d event touches count=%d",[touches count],[[event allTouches] count]);
This told me that I should really be looking at [event allTouches] for much of my behavior.
I then added the code
touches=[event allTouches];
To my begin and moved events. This resulted in MUCH smoother movement of stuff.
My scaling is a bit strange, I think because of the multiplication effect, if I have a window with one larger dimension, the multiplication effect from
// We should be able to scale up evenly this way.
double heightRatio=lastRect.size.height/startRect.size.height;
double widthRatio=lastRect.size.width/startRect.size.width;
double newWidth=imageStartSize.size.width*widthRatio;
double newHeight=imageStartSize.size.height*heightRatio;
Results in a strange scaling pattern. If one of the imageStartSizes is significantly higher, then the ratio for
that one takes a beating. Similarly a low starting value results in almost insignificant moves.
I still want be able to scale both height and width independently, but I need to make it smoother.
Instead of multiplying, I'm going to add:
// We should be able to scale up evenly this way.
double dheight=lastRect.size.height-startRect.size.height;
double dwidth=lastRect.size.width-startRect.size.width;
double newWidth=imageStartSize.size.width+dwidth;
double newHeight=imageStartSize.size.height+dheight;
This results in scaling that is directly proportional to the amount the user moves their fingers on the screen. You can even get some fun move at a distance effects that might not be intuitive, but works fun.
(The other choice is to make the rectangle directly dependent on the points chosen. This is probably more standard, and I might try it out later. But first its time to refactor.
No comments:
Post a Comment