2012-03-24 2 views
0

Я довольно новичок в Objective-C и хочу создать довольно простую Jigsaw. В настоящее время я просто смотрю на создание головоломки из 4 предметов в качестве способа изучения метода.«Drag 'n' Drop» игровая анимация

В настоящее время у меня есть 4 штуки, размещенные вокруг экрана, которые при перетаскивании в определенное место на экране привязаны к этому месту.

Моя проблема заключается в том, чтобы анимировать штрихи. Я хочу, чтобы изображение коснулось немного, но у меня возникли проблемы с синтаксисом. Я посмотрел пример MoveMe, который предлагает Apple, но это не помогает мне в этой ситуации. Ниже приведен код. Я был бы признателен за любую помощь в этом. Благодарю.

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    //location of current touch 
    CGPoint location = [touch locationInView:self.view]; 
    if ([touch view] == image1) { 
     image1.center = location; 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.5]; 
     image1.transform = CGAffineTransformMakeScale(1.5, 1.5); 
     [UIView commitAnimations];  
    } else if ([touch view] == image2) { 
     image2.center = location; 
     animateFirstTouch:image2; 
    } else if ([touch view] == image3) { 
     image3.center = location; 
     image3.transform = CGAffineTransformMakeScale(1.5, 1.5); 
    } else if ([touch view] == image4) { 
     image4.center = location; 
     image4.transform = CGAffineTransformMakeScale(1.5, 1.5); 
    } 

} 

-(void) animateFirstTouch:(UIView *)image { 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    self.view.transform = CGAffineTransformMakeScale(1.5, 1.5); 
    [UIView commitAnimations]; 
} 

Код для изображения1 работает, и изображение увеличивается на 0,5 секунды.

Код для изображения2 выдает ошибку: результат выражения не используется для анимацииFirstTouch: image2.

Код для image3 и image4 масштабирует изображения без анимации.

ответ

1

См. Ответ Kuldeep по этой ссылке. Я думаю, что будет работать для вас:

iPhone/iOS: How to implement Drag and Drop for subviews of a Scrollview?

Также в качестве альтернативы, обратитесь к ответу iPhone «s в этой ссылке:

iPhone App: implementation of Drag and drop images in UIView

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    //location of current touch 
    CGPoint location = [touch locationInView:self.view]; 
    if ([touch view] == image1) { 
     [self animateFirstTouch:image1 withLocation:location]; 
    } else if ([touch view] == image2) { 
     [self animateFirstTouch:image2 withLocation:location]; 
    } else if ([touch view] == image3) { 
     [self animateFirstTouch:image3 withLocation:location]; 
    } else if ([touch view] == image4) { 
     [self animateFirstTouch:image4 withLocation:location]; 
    } 

} 

-(void) animateFirstTouch:(UIImageView *)image withLocation:(CGPoint)location { 
     image.center = location; 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.5]; 
     image.transform = CGAffineTransformMakeScale(1.5, 1.5); 
     [UIView commitAnimations]; 
} 

Надеется, что это помогает.

Свяжитесь со мной, если вам нужна дополнительная помощь.

+0

Hi. Спасибо, но это похоже на совсем другой подход к тому, который я действительно хочу. Я пытаюсь узнать об анимации и масштабировании. У меня есть функция анимации, настроенная, насколько я могу видеть, я просто испытываю трудности с передачей изображения функции. Если вы можете помочь с этим, было бы здорово. – garethdn

+0

@garethdn: Пожалуйста, проверьте код, который я отредактировал, и немного изменил ваш код и добавил его к моему ответу. Пожалуйста, используйте этот код. Пожалуйста, свяжитесь со мной, если вам нужна помощь. –

+0

Спасибо за это Parth. Есть ли способ ограничить эту анимацию своим собственным методом, например, функцией animateFirstTouch, которую я написал выше. Кажется расточительным повторять один и тот же код снова и снова. Или еще лучше, есть ли способ сказать: если затронутый объект - это изображение, оживите его, чтобы оно увеличилось более чем на 0,5 секунды? – garethdn