我正在尝试为iPad构建一个基本的Jigsaw应用程序但是我对目标c和xcode非常新,这意味着这是我第一次使用完全正常的应用程序。
我一直在网上关注一些教程并构建了一个非常基本的三个图像拼图,并成功地设法使其运行。但是,当用户拖动正确的区域并显示动画或声音时,我希望能够将图像捕捉到位。
我有点迷失了,我知道我需要为每个拼图指定x和y坐标,但是如果这是正确的位置我如何检查这个,然后触发一个动作,如动画和声音?
这是我目前的代码
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches]anyObject];
CGPoint touchLocation = [touch
locationInView:self.view];
if ([touch view] == image1){
image1.center = touchLocation;
NSLog(@"Touch x : %f y : %f", touchLocation.x, touchLocation.y);
}
else if ([touch view] == image2){
image2.center = touchLocation;
NSLog(@"Touch x : %f y : %f", touchLocation.x, touchLocation.y);
}
else if ([touch view] == image3){
image3.center = touchLocation;
NSLog(@"Touch x : %f y : %f", touchLocation.x, touchLocation.y);
}
}
正如你所看到的那样,我正在记录x和y,但我不确定如何继续这个
答案 0 :(得分:0)
这是一个非常好的问题,我一直在考虑为孩子们准备这么简单的益智应用程序。
你走在正确的轨道上。我相信诀窍是要知道原始X,Y图像的位置应该在哪里。一旦用户在这些坐标上拖动它,你就可以锁定它并发出愉快的声音。我就是这样做的。 (这是伪代码)
如果有办法找到你是否足够接近原始图像的x,y坐标,那将会很酷
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches]anyObject];
CGPoint touchLocation = [touch
locationInView:self.view];
if ([touch view] == image1 && image1Locked == NO)
{
image1.center = touchLocation;
NSLog(@"Touch x : %f y : %f", touchLocation.x, touchLocation.y);
if ( (touchLocation.x == to where x location of image1 should be) &&
(touchLocation.y == to where y location of image1 should be)
{
//lock image by not checking drag anymore
image1Locked = YES;
//move the image1 in place where its should be
//happy sounds
[self happySounds];
}
}
...
答案 1 :(得分:0)
我们可以说{x1,y1}是image1的位置,如果您在touchesMoved
或touchesEnded
中检查触摸是否恰好位于{x1,y1},那么没有人会这样做。
所以,添加一个错误的错误,让我们把它命名为Epsilon,而不是再检查一个点,现在我们将尝试检查一个正方形(中心{x1,y1}和Epsilon的边长):这里有一些代码可以帮助你:< / p>
float epislon = 20.0;
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches]anyObject];
CGPoint touchLocation = [touch
locationInView:self.view];
if ([touch view] == image1)
{
image1.center = touchLocation;
NSLog(@"Touch x : %f y : %f", touchLocation.x, touchLocation.y);
CGRect rect1= CGRectMake(x1-epsilon/2.0, y1-epsilon/2.0, epsilon, epsilon);
if(CGRectContainsPoint(rect1,touchLocation))
{
NSLog(@"did find position for image1");
}
}
}