1

スタックオーバーフローに関する私の最初の質問:)

CALayer で y 軸の変換を行いたいです。私は大きな背景を手に入れました:320x4000px。翻訳は次のコードで動作しています:

NSNumber *deplacement = [NSNumber numberWithFloat:([app.session.progression floatValue] * HAUTEUR_FOND) /100];

self.backgroundLayer.transform = CATransform3DMakeTranslation(0, -[deplacement floatValue], 0);

しかし、このコードでは、期間を設定することは不可能です...

私はそれで試しました:

CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"];
transformAnimation.duration = 5.0f;
transformAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, -[deplacement floatValue], 0)];
[self.backgroundLayer addAnimation:transformAnimation forKey:@"position.y"];

しかし、うまくいきません...

手伝ってくれてありがとう :)

4

1 に答える 1

2

わかりました、ここに答えがあります、多分それは誰かを助けるでしょう:)

NSNumber *deplacement = [NSNumber numberWithFloat:([app.session.progression floatValue] * HAUTEUR_FOND) /100];
DebugLog(@"deplacement : %@", deplacement);

if(!backgroundPositionMemo) backgroundPositionMemo = 0;

CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
transformAnimation.duration = 1.0f;
transformAnimation.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, -backgroundPositionMemo, 0)];
transformAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, -[deplacement floatValue], 0)];
transformAnimation.removedOnCompletion = NO;
transformAnimation.fillMode = kCAFillModeForwards;
[self.backgroundLayer addAnimation:transformAnimation forKey:@"transform"];

backgroundPositionMemo = [deplacement floatValue];
于 2011-09-26T08:56:34.767 に答える