画面の片側から別の側に画像を移動したいと思います。
ball1 と ball2 の 2 つの UIImageView があります。左側に 1 つ、右側に 1 つ。デバイスは横向きモードです。ユーザーがボタンをクリックすると、モーション トゥイーンのようにサイドが切り替わるようにします。CGPoint を使用してみましたが、わかりません。
CGPoint firstCenter = ball1.center;
CGPoint secondCenter = ball2.center;
[UIView animateWithDuration:1.0 animations:^{
ball1.center = secondCenter;
ball2.center = firstCenter;
}];
スプライトの動きについては、このリンクを試してください
あなたの質問に関しては、コアアニメーションを使用して、ボールの位置を変更することができます。
ヘッダーに 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)move
CGPoints と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);
されます。