0

画面の片側から別の側に画像を移動したいと思います。

ball1 と ball2 の 2 つの UIImageView があります。左側に 1 つ、右側に 1 つ。デバイスは横向きモードです。ユーザーがボタンをクリックすると、モーション トゥイーンのようにサイドが切り替わるようにします。CGPoint を使用してみましたが、わかりません。

4

3 に答える 3

2
CGPoint firstCenter = ball1.center;
CGPoint secondCenter = ball2.center;
[UIView animateWithDuration:1.0 animations:^{
    ball1.center = secondCenter;
    ball2.center = firstCenter;
}];
于 2012-07-19T05:31:34.120 に答える
0

スプライトの動きについては、このリンクを試してください

あなたの質問に関しては、コアアニメーションを使用して、ボールの位置を変更することができます。

于 2012-07-19T05:34:27.300 に答える
0

ヘッダーに 2 つの CGPoint と NSTimer を作成し、

CGPoint pos1;
CGPoint pos2;
NSTimer *timer;

画像を移動する前に他の方法で、画像の速度として使用される CGPoints を設定します。水平方向に移動しているため、CGPoint はそれぞれ x および y パラメーターを要求します。この例では、右と左にそれぞれ と を(2.0,0.0);使用します。(-2.0,0.0);

pos = CGPointMake(2.0,0.0);    
pos2 = CGPointMake(-2.0,0.0);    

そして、「move」というメソッドを起動するようにタイマーを設定します

timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector (move) userInfo:nil repeats:YES];

と呼ばれるメソッドを使用してボールの移動を停止するために、グローバルに宣言されていない別のタイマーを作成しますstopBalls。(これを行うのに2秒かかると仮定します。実験して、2.0動作するものに置き換えてください)

[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector (stopBall) userInfo:nil repeats:YES];

-(void)moveCGPoints とpos変数を使用して画像を移動するメソッドを作成します。ball1画像の名前がと であると仮定しますball2

-(void)move
{
    ball1.center = CGPointMake(ball1.center.x+pos1.x,ball1.center.y +pos1.y);
    if (ball1.center.x > 2024 || ball1.center.x < 0)
        pos1.x = -pos1.x;
    if (ball1.center.y > 768 || ball1.center.y < 0)
        pos1.y = -pos1.y;

    ball2.center = CGPointMake(ball2.center.x+pos2.x,ball2.center.y +pos2.y);
    if (ball2.center.x > 2024 || ball2.center.x < 0)
        pos2.x = -pos2.x;
    if (ball2.center.y > 768 || ball2.center.y < 0)
        pos2.y = -pos2.y;
}

stopBalls次に、ボールが動かないようにするメソッドを作成します。これにより CGPoint がリセットされ、停止しtimerます。

-(void)stopBalls
{
    pos = CGPointMake(0.0,0.0);    
    pos2 = CGPointMake(0.0,0.0); 
    [timer invalidate];
}

動きを開始するために使用したメソッドを再実行するだけで、もう一度実行できます。

また、ボールの移動中にメソッドを複数回実行しないでください。これにより、別のタイマーの速度が 2 倍になり、(2.0,0.0);発射(-2.0,0.0);されます。

于 2012-07-19T05:44:44.373 に答える