2

私は現在、答えが見つからないように見える問題に不満を感じています。ユーザーが制御する UIImageView があり、押す方向に応じて左右に 20 ピクセル移動します。同時に、別のボタンを押して NSArray でアニメーション化しようとしています。ただし、UIImageView をアニメーション化するたびに、位置がリセットされます。

たとえば、右に 80 ピクセル移動すると、アニメーション ボタンが押されるとすぐに、アニメーション前の元の位置に戻ります。それは非常に腹立たしいです。これが私のコードです:

('pos' は (20,0) ピクセルに設定された CGPoint です)

-(IBAction)moveleft {

    player.center = CGPointMake(player.center.x-pos.x,player.center.y+pos.y);
}


-(IBAction)moveright {

    player.center = CGPointMake(player.center.x+pos.x,player.center.y+pos.y);
}



-(IBAction)animove {

isMove = TRUE;

    player.animationImages = [NSArray arrayWithObjects:

                              [UIImage imageNamed:@"move0002.png"],
                              [UIImage imageNamed:@"move0003.png"],
                              [UIImage imageNamed:@"move0004.png"],
                              [UIImage imageNamed:@"move0005.png"],
                              [UIImage imageNamed:@"move0006.png"],
                              [UIImage imageNamed:@"move0007.png"],
                              [UIImage imageNamed:@"move0008.png"],
                              [UIImage imageNamed:@"move0009.png"],
                              [UIImage imageNamed:@"move0010.png"], nil];



    player.animationDuration = 0.35;
    player.animationRepeatCount = 1;
    [player startAnimating];



}

結論として、両方とも正常-(IBAction)moveleft-(IBAction)moveright動作します。

-(IBAction)animove、しかし一度animove実行されると、UIImageViewplayerは左または右の移動が行われる前の元の位置に戻ります。

どんな助け/提案も大歓迎です。

4

3 に答える 3

3

これは非常に古い質問ですが、同じ問題があり、答えを見つけました: UnCheck AutoLayout.

その方法: http://www.raywenderlich.com/17811/how-to-make-a-simple-mac-app-on-os-x-10-7-tutorial-part-13/smat-disable -自動レイアウト

私のようにこれに出くわした人は頑張ってください。

于 2014-10-08T22:37:34.733 に答える
0

オブジェクトを移動するときに位置を覚え、アニメーション ボタンを押したときに位置をリセットしてみてください。

-(IBAction)moveleft {
    rememberPosition = CGPointMake(player.center.x-pos.x,player.center.y+pos.y);
    player.center = rememberPosition; 
}

-(IBAction)moveright {
    rememberPosition = CGPointMake(player.center.x+pos.x,player.center.y+pos.y);
    player.center = rememberPosition;
}

-(IBAction)animove {
    player.center = rememberPosition;
    player.animationImages = [NSArray arrayWithObjects: ...];
    player.animationDuration = 0.35;
    player.animationRepeatCount = 1;
    [player startAnimating];
}
于 2013-03-15T09:20:17.580 に答える
0

なぜそのような行動をとってしまうのかわかりません...

ここでコードを確認しましたhttps://dl.dropbox.com/u/19438780/testAnim.zip

縫い目は大丈夫です。

于 2013-03-15T09:02:52.060 に答える