Cocos2D 初步了解三:CCAction

一、解析
1)包含4个动作
1.CCFiniteTimeAction 和时间相关的动作

2.CCFlow 让图层跟随精灵移动
3.CCReapeatForever 循环
4.CCSpeed 和速度相关的动作
//————————-
2)CCFlow 让图层跟随精灵移动
3)CCFiniteTimeAction 分
a.CCInstantAction 瞬时动作 闪现
b.CCIntervalAction 延时动作 奔跑

二、jumpBy , moveTo , moveBy
1) moveBy 有 reverse() 而moveTo没有
2) jumpBy height指的是跳跃时抛物线最高点离物体的距离
CCJumpBy.action(time,pos ,height, jumps);
Cocos2D 初步了解三:CCAction_第1张图片
三、代码

public class ActionLayer extends CCLayer {

    private CCSprite mManSprite;

    public ActionLayer() {
        setIsTouchEnabled(true);
        init();
    }

    private void init() {
        createSprite("bbg_arena.jpg");
        moveTo();
        moveBy();
        jumpBy();
        scaleBy();
        rotateTo();
        rotateBy();
    }

    //偷懒做法
    private void rotateTo() {
        CCSprite sprite = createSprite("msn.png");
        // 设置在锚点上100处
        sprite.setPosition(300, 350);
        CCRotateTo rotate = CCRotateTo.action(2, 160);
        // 反向
        //CCIntervalAction reverse = rotate.reverse();
        // 连接动作
        //CCSequence sequence = CCSequence.actions(rotate, reverse);
        // 无限循环
        CCRepeatForever forever = CCRepeatForever.action(rotate);
        // 运行动作
        sprite.runAction(forever);
    }

    private void rotateBy() {
        CCSprite sprite = createSprite("msn.png");
        // 设置在锚点上100处
        sprite.setPosition(200, 150);
        CCRotateBy rotate = CCRotateBy.action(2, 360);
        // 反向
        CCRotateBy reverse = rotate.reverse();
        // 连接动作
        CCSequence sequence = CCSequence.actions(rotate, reverse);
        // 无限循环
        CCRepeatForever forever = CCRepeatForever.action(sequence);
        // 运行动作
        sprite.runAction(forever);
    }

    private void scaleBy() {
        CCSprite sprite = createSprite("heart.png");
        // 设置在锚点上100处
        sprite.setPosition(100, 100);
        // 基于锚点的缩放
        CCScaleBy scale = CCScaleBy.action(2, 0.5f);
        // 反向
        CCScaleBy reverse = scale.reverse();
        // 连接动作
        CCSequence sequence = CCSequence.actions(scale, reverse);
        // 无限循环
        CCRepeatForever forever = CCRepeatForever.action(sequence);
        // 运行动作
        sprite.runAction(forever);
    }

    public void moveTo() {
        mManSprite = createSprite("z_1_attack_01.png");
        CCAction move = CCMoveTo.action(2, CCNode.ccp(200, 0));
        mManSprite.runAction(move);
    }

    public void jumpBy() {
        CCSprite sprite = createSprite("z_1_attack_01.png");
        // 设置在锚点上100处
        sprite.setPosition(0, 200);
        CCJumpBy jump = CCJumpBy.action(2, CCNode.ccp(200, 0), 50, 1);
        // 反向
        CCJumpBy reverse = jump.reverse();
        // 连接动作
        CCSequence sequence = CCSequence.actions(jump, reverse);
        // 运行动作
        sprite.runAction(sequence);
    }

    public void moveBy() {
        CCSprite sprite = createSprite("z_1_attack_01.png");
        // 设置在锚点上100处
        sprite.setPosition(0, 100);
        CCMoveBy move = CCMoveBy.action(2, CCNode.ccp(200, 0));
        // 反向
        CCMoveBy reverse = move.reverse();
        // 连接动作
        CCSequence sequence = CCSequence.actions(move, reverse);
        // 无限循环
        CCRepeatForever forever = CCRepeatForever.action(sequence);
        // 运行动作
        sprite.runAction(forever);
    }

    private CCSprite createSprite(String path) {
        CCSprite sprite = CCSprite.sprite(path);
        sprite.setAnchorPoint(0, 0);
        this.addChild(sprite);
        return sprite;
    }
}

你可能感兴趣的:(cocos2d,移动)