0

CAKeyFrameAnimation で奇妙な問題に直面しています。

コードは次のとおりです。

//Inside the selector method of the button
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
[anim setDelegate:self];
anim.path = racetrack.path;
anim.rotationMode = kCAAnimationRotateAuto;
anim.repeatCount = 0;
anim.duration = 10.0;

[carBtn.layer addAnimation:anim forKey:@"race"];

アニメーションは正常に動作します。この問題は、carBtn (車の背景イメージを持つボタン) が押されたときに発生します。ボタンの画像が理由もなく 180° 回転します (少なくとも私にとっては理由はありません)。アニメーションの作成後、このコード行でボタンを自分で回転させる必要があります

carBtn.transform = CGAffineTransformMakeRotation(M_PI);

...しかし、1 ~ 2 秒間 (アニメーションが開始する前)、車は最初の位置と反対を向いています。ボタンは次のように作成されます。

UIImage* car = [UIImage imageNamed:@"car_image"];
carBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[carBtn setFrame:CGRectMake(startPoint.x-45, startPoint.y-33, macchina.size.width, macchina.size.height)];
[carBtn setBackgroundImage:car forState:UIControlStateNormal];
[carBtn setBackgroundImage:car forState:UIControlStateHighlighted];
[carBtn addTarget:self action:@selector(carPressed) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:carBtn];

これはどのように可能でしょうか?ありがとう

4

1 に答える 1

0

これがその仕組みです。ビューのX軸は、パスの接線に沿って配置されます。

適用するローテーションが明示的に機能する場合は、それを使用します。それ以外の場合は、ここで完全に解決された解決策を見つけることができます。

于 2013-02-10T17:15:27.817 に答える