OGeek|极客世界-中国程序员成长平台

标题: iphone - 在 cocos2d 中为图层路径添加动画 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 22:33
标题: iphone - 在 cocos2d 中为图层路径添加动画

所以我在 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上做boxpathroundpath动画的方法,不知道CCAction用什么。有谁能够帮我 ?对不起我的英语我是法国人:/



Best Answer-推荐答案


据我所知,Cocos2d 中没有直接接口(interface)可以使用 Apple 的 CoreAnimation 库中的 CGPaths。


EDIT1:对不起,我误解了你的问题! Cocos2d 没有提供任何工具来动画/变形从由路径定义的一个形状到由不同路径定义的另一个形状。您要么需要创建自己的继承自 CCNode 的自定义类,要么使用 Cocos2d 以外的其他库。如果您确实创建了自己的 CCNode 子类,那么现有的 Cocos2d Action /动画工具可能会有用......


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),那么我建议您了解 Object 的这一部分面向编程使用更简单的问题!


<罢工> 我相信您最好的选择是查看 CCSequence(这是一种 CCAction)并用一系列 CCMoveTo 填充它>CCMoveBy Action 。

教程链接:http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:actions_composition

关于iphone - 在 cocos2d 中为图层路径添加动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10093470/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4