5

こんにちは、複数の画像からキーフレーム アニメーションを作成しています。私の問題は、アニメーションをフェードではなく、ある画像から次の画像に即座に変更したいということです。

    CALayer *animLayer = [CALayer layer];
    animLayer.bounds = CGRectMake(0, 0, width, height);
    animLayer.position = CGPointMake(0, 0);

    CAKeyframeAnimation *customFrameAnimation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
    NSArray *sizeValues = [NSArray arrayWithObjects:(id)image1, (id)image2, nil];
    NSArray *times = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:0.5f], nil]; 
    NSArray *timingFunctions = [NSArray arrayWithObjects: [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault], [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault], nil];

    [customFrameAnimation setValues:sizeValues];
    [customFrameAnimation setKeyTimes:times];

    customFrameAnimation.duration=5.0;
    customFrameAnimation.beginTime = 1e-100;
    customFrameAnimation.fillMode = kCAFillModeRemoved;
    customFrameAnimation.timingFunctions = timingFunctions;
    customFrameAnimation.removedOnCompletion = YES;
    [animLayer addAnimation:customFrameAnimation forKey:nil]; 

前もって感謝します。

4

1 に答える 1

13

アニメーションでは、calculationModeをkCAAnimationDiscreteに設定する必要があります。

計算モードの使用方法を説明しているkeyTimesのドキュメントをご覧ください。

keyTimes配列の適切な値は、calculationModeプロパティによって異なります。

  • CalculationModeがkCAAnimationLinearに設定されている場合、配列の最初の値は0.0で、最後の値は1.0である必要があります。値は、指定されたキー時間の間で補間されます。

  • CalculationModeがkCAAnimationDiscreteに設定されている場合、配列の最初の値は0.0である必要があります。

  • CalculationModeがkCAAnimationPacedまたはkCAAnimationCubicPacedに設定されている場合、keyTimes配列は無視されます。

keyTimes配列の値が無効であるか、calculationModeに対して不適切である場合、keyTimes配列は無視されます。

そして、あなたは計算モードの説明を読むことができます:

値計算モード

これらの定数は、calculationModeプロパティによって使用されます。

NSString * const kCAAnimationLinear;

NSString * const kCAAnimationDiscrete;

NSString * const kCAAnimationPaced;

定数

kCAAnimationLinear

キーフレーム値間の単純な線形計算。
Mac OSXv10.5以降で利用できます。CAAnimation.hで宣言されています。

kCAAnimationDiscrete

各キーフレーム値が順番に使用され、補間値は計算されません。Mac OSXv10.5以降で利用できます。CAAnimation.hで宣言されています。

kCAAnimationPaced

キーフレーム値は、アニメーション全体で均一なペースを生成するように補間されます。
Mac OSXv10.5以降で利用できます。CAAnimation.hで宣言されています。

つまり、離散計算モードでは、アニメーションがアニメーション化/遷移するのではなく、各キーフレームにジャンプします。

よろしくお願いします。

于 2010-10-28T05:09:04.493 に答える