2011-12-05 6 views
5

私は知っていませんどのように私のアプリで次のタイプの機能を取得する。上図のユーザに示すようにiPhone:以下のように、UIImage/UIButtonをドラッグまたは移動するにはどうすればよいですか?

enter image description here

(ドラッグ)は、異なる画像部分と、ユーザが画像を組み立てることができるスライドさせることができます。

いずれのコントロールがこれを制御するか教えてください。またはそれのための任意のチュートリアル?

+0

私は、これはcocos2d、ないのUIKitなどのライブラリーのための、より適しものです考えています。 –

+0

@リチャードJ。RossII:coocs2dの詳細を教えてください。またはリンク? – iPhone

+0

http://cocos2d-iphone.org –

答えて

7

チェックアウトMoveMeサンプルアプリすることができます。それはタッチしてドラッグすることによってサブビューの動きを許可する方法を示します。

次に、移動できるパズルピースごとにimageViewsを作成できます。

これを達成したら、ピースの動きの際に、それがピザの正しい場所に近づくのを確認して、ユーザーがそのピースを離れるときにスナップできるようにする必要があります。

http://developer.apple.com/library/ios/#samplecode/MoveMe/Introduction/Intro.html

+0

+1は、アプリの可能性を最大限に引き出すためのものです。 MoveMeは、質問を読むときに私が最初に思った考えでした。 – Till

0

UIKitについて言えば、 これは部分透明領域を持つ画像を持つUIImageViewです。

+0

しかし、その画像をドラッグする方法は? – iPhone

+0

UIKitはゲームやゲームに似たものではないために悪いです。私はそれが最高のOpenGLを使用すると思います –

+0

OpenGLはゲームのために使用するのに最適なものであり、多分初心者のためのすべてを使うことができます。 COCOS2Dは2Dゲーム開発から始めるのに最適です。 – samfisher

1

これは、実行する実装の種類によって異なります。 それはUIImageView、UIbuttonなど あなたは簡単にビューを移動しUIGestureRecognizerを実装できる可能性がありUIIMageViewの利点..

0

これは容易ではありません。イメージビューの移動方法については、まずコードを記述する必要があります。 Appleの参考文献には多くのサンプルがあります。次に、これを行うために各画像の境界線を取得する必要があります。周りのUIImageViewsをドラッグするため

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event 
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event 
- (void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event 

:私はタッチ機能を使用し、私が構築されたアプリケーションのための

+0

すごいよ!あなたは[email protected]で私にサンプルを送ることができますか? – iPhone

1

。次に、CGRectContainsRectまたはCGRectContainsPointを使用して、パズルピースが適切な場所にあるかどうかを検出できます。次のようにこの問題の

0

私の最初の攻撃は、次のようになります。

(1)サブクラスUIImageViewは、パズルの各部分を保持します。

(2)UIImageViewサブクラスをUIPanGestureRecognizerで初期化してカスタマイズします。何かのように:

self.panRecognizer =  
  [[UIPanGestureRecognizer alloc]  
    initWithTarget: self  
    action: @selector(handlePan:)]; 
[self addGestureRecognizer:  
  self.panRecognizer]; 

(3)、パンジェスチャ認識装置に関連付けられたアクションの方法でパズルピースのパンジェスチャ認識装置からのメッセージに基づいて、オブジェクトの位置を更新します。以下のようなものがうまく動作するはずです:

-(void) handlePan:  
  (UIGestureRecognizer *)sender 
{ 
  UIPanGestureRecognizer *panRecognizer =  
    (UIPanGestureRecognizer *)sender; 
  if (panRecognizer.state ==  
        UIGestureRecognizerStateBegan || 
      panRecognizer.state ==  
        UIGestureRecognizerStateChanged) 
  { 
    CGPoint currentPoint =  
      self.center; 
    CGPoint translation =  
      [panRecognizer translationInView:  
        self.superView]; 
    self.center = CGPointMake 
      (currentPoint.x + translation.x,  
        currentPoint.y + translation.y); 
    [panRecognizer setTranslation: CGPointZero  
      inView: self.superView]; 
  } 
} 
0

ここでは、UIImageViewであるimgTestを移動するコードを示します。テストされ、魅力的なように動作します。

[[self imgTest]setUserInteractionEnabled:YES]; 

//Save the first touch point 
CGPoint firstTouchPoint; 

//xd,yd destance between imge center and my touch center 
float xd; 
float yd; 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch* bTouch = [touches anyObject]; 
    if ([bTouch.view isEqual:[self imgTest]]) { 
     firstTouchPoint = [bTouch locationInView:[self view]]; 
     xd = firstTouchPoint.x - [[bTouch view]center].x; 
     yd = firstTouchPoint.y - [[bTouch view]center].y; 
    } 
} 

{ 
    UITouch* mTouch = [touches anyObject]; 
    if (mTouch.view == [self imgTest]) { 
     CGPoint cp = [mTouch locationInView:[self view]]; 
     [[mTouch view]setCenter:CGPointMake(cp.x-xd, cp.y-yd)]; 
    } 
} 

source

関連する問題