2

私はcocos2dを使用していますが、通常のiosアプリを使用する前は、次のコードがありました:

-(void)viewDidLoad
{
    rootLayer = [[CALayer alloc] init];
    [imageView.layer addSublayer:rootLayer];
    roundPath = CGPathCreateMutable();

    CGPathMoveToPoint(roundPath, nil, center.x , center.y - 35);
    CGPathAddArcToPoint(roundPath, nil, center.x + 35, center.y - 35, center.x + 35, center.y + 35, 35);
    CGPathAddArcToPoint(roundPath, nil, center.x + 35, center.y + 35, center.x - 35, center.y + 35, 35);
    CGPathAddArcToPoint(roundPath, nil, center.x - 35, center.y + 35, center.x - 35, center.y, 35);
    CGPathAddArcToPoint(roundPath, nil, center.x - 35, center.y - 35, center.x, center.y - 35, 35);

    CGPathCloseSubpath(roundPath);

    //Box Path

    boxPath = CGPathCreateMutable();

    CGPathMoveToPoint(boxPath, nil, center.x , center.y - 35);
    CGPathAddArcToPoint(boxPath, nil, center.x + 35, center.y - 35, center.x + 35, center.y + 35, 4.7);
    CGPathAddArcToPoint(boxPath, nil, center.x + 35, center.y + 35, center.x - 35, center.y + 35, 4.7);
    CGPathAddArcToPoint(boxPath, nil, center.x - 35, center.y + 35, center.x - 35, center.y, 4.7);
    CGPathAddArcToPoint(boxPath, nil, center.x - 35, center.y - 35, center.x, center.y - 35, 4.7);

    CGPathCloseSubpath(boxPath);
    shapeLayer = [CAShapeLayer layer];

    shapeLayer.path = boxPath;

    [rootLayer addSublayer:shapeLayer];
}

-(void)startAnimation
{   
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];

    animation.duration = 2.0;

    animation.repeatCount = HUGE_VALF;

    animation.autoreverses = YES;

    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    animation.fromValue = (id)boxPath;

    animation.toValue = (id)roundPath;

    [shapeLayer addAnimation:animation forKey:@"animatePath"];
}

しかし、cocos2d で からboxpathへのアニメーションを実行する方法が見つかりroundpathませんでした。CCAction が何を使用するのかわかりません。誰でも私を助けることができますか?私の英語で申し訳ありませんが、私はフランス人です:/

4

1 に答える 1

2

私の知る限り、Cocos2d には、Apple の CoreAnimation ライブラリの CGPaths を使用するための直接的なインターフェイスはありません。


EDIT1:申し訳ありませんが、私はあなたの質問を誤解しました! Cocos2d は、パスによって定義されたある形状から別のパスによって定義された別の形状にアニメーション化/モーフィングするためのツールを提供しません。CCNode から継承する独自のカスタム クラスを作成するか、Cocos2d 以外のライブラリを使用する必要があります。独自の CCNode サブクラスを作成する場合は、既存の Cocos2d アクション/アニメーション ツールが役立つ可能性があります...


EDIT2:サブクラス化する方法を理解している場合は、CCNode のサブクラスでどのメソッドをオーバーライドするかについての非常に基本的なリンクを次に示します: http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide :draw_update

また、cocos2d プログラミング ガイドは一般的に役立つ場合があります: http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:index

サブクラス化する方法を理解していない場合 (たとえばclass、既存の から新しい継承を行う場合class) は、オブジェクト指向プログラミングのこの部分について、より単純な問題を使用して学習することをお勧めします。


あなたの最善の選択肢は、CCSequence(これはの一種ですCCAction)を調べて、一連の CCMoveToまたはCCMoveByアクションを詰め込むことだと思います。

チュートリアル リンク: http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:actions_composition

于 2012-04-10T21:41:18.837 に答える