Cocos3.0学习笔记-Acition-基本动作

- MoveTo,MoveBy,ScaleTo,ScaleBy,Blink

MoveTo ##

MoveTo动作,就是将精灵(或其他元素)移动到指定位置,与精灵本身的位置无关。

    //获取屏幕资源
    Size visiableSize = Director::getInstance()->getVisibleSize();

    //----------------------- move to 精灵移动到,指定的位置-----------------------------
    //新建熊猫sprite
    Sprite* panda_spr1 = Sprite::create("panda2.png");
    panda_spr1->setPosition(ccp(visiableSize.width / 2 - 200, visiableSize.height / 2));
    this->addChild(panda_spr1);

    //创建 moveAction 动作,第一个参数是动作时间3秒,第二个参数为指定位置参数,移动到1/3,1/3的位置
    MoveTo* movetoAct = MoveTo::create(3.0f, (ccp(visiableSize.width / 3, visiableSize.height / 3)));

    //给精灵设置动作runAction 
    panda_spr1->runAction(movetoAct);

MoveBy

MoveBy动作,就是将精灵(或其他元素)在自己本身位置的基础上向指定方向移动指定距离。

    //获取屏幕资源
    Size visiableSize = Director::getInstance()->getVisibleSize();

    //----------------------- move by 精灵 向指定的方向移动相应的值,正正为右上,负负为左下-----------------------------
    //新建熊猫sprite
    Sprite* panda_spr2 = Sprite::create("panda2.png");
    panda_spr2->setPosition(ccp(visiableSize.width / 2 - 400, visiableSize.height / 2));
    this->addChild(panda_spr2);

    //创建 moveAction 动作,第一个参数是动作时间,第二个参数为位置参数,这里是向上1/3,向右1/3
    MoveBy* movebyAct = MoveBy::create(3.0f, (ccp(visiableSize.width / 3, visiableSize.height / 3)));

    //给精灵设置动作runAction 
    panda_spr2->runAction(movebyAct);

ScaleTo

ScaleTo动作,就是将精灵(或其他元素)根据原始大小变化到指定倍数的大小,与精灵变化后的大小无关。

    //获取屏幕资源
    Size visiableSize = Director::getInstance()->getVisibleSize();

    //----------------------- scale to 精灵 不管当前变化大小是多少,倍数基准值为原始大小 -----------------------------
    //新建熊猫sprite
    Sprite* panda_spr3 = Sprite::create("panda2.png");
    panda_spr3->setPosition(ccp(visiableSize.width / 2, visiableSize.height / 2));
    //在这里我们为了测试,使精灵变大了两倍
    panda_spr3->setScale(2.0f);
    this->addChild(panda_spr3);

    //创建 scaleToAct 动作,第一个参数,动作时间,后面两个,变化倍数值
    //由ScaleTo的属性,变化到原始大小的倍数,又因为前面我们放大了两倍
    //所以效果是,精灵,缩小了,缩小到了原始大小
    ScaleTo* scaleToAct = ScaleTo::create(3.0f, 1.0f, 1.0f);

    //给精灵设置动作runAction 
    panda_spr3->runAction(scaleToAct);

ScaleBy

ScaleBy的属性,根据精灵当前大小,进行变化倍数,与精灵的原始大小无关。

    //获取屏幕资源
    Size visiableSize = Director::getInstance()->getVisibleSize();

    //----------------------- scale by 精灵 倍数基准值为当前大小 -----------------------------
    //新建熊猫sprite
    Sprite* panda_spr4 = Sprite::create("panda2.png");
    panda_spr4->setPosition(ccp(visiableSize.width / 2 + 200, visiableSize.height / 2));
    panda_spr4->setScale(2.0f);
    this->addChild(panda_spr4);

    ////创建 scaleByAct 动作,第一个参数,动作时间,后面两个,变化倍数值
    //由ScaleBy的属性,根据当前大小,进行变化倍数,这里就是1.0,就是在当前大图像下变1.0倍,就是不变
    //所以效果是,精灵,并没有发生改变,不会像 scaleTo 一样变回去
    ScaleBy* scaleByAct = ScaleBy::create(3.0f, 1.0f, 1.0f);

    //给精灵设置动作runAction 
    panda_spr4->runAction(scaleByAct);

类比起来,实现是很简单的,多做几组参数,就能发现其中规律了。

Blink就是闪烁动作了,相对来说就更简单了。

    //----------------------- blink -----------------------------
    //获取屏幕资源
    Size visiableSize = Director::getInstance()->getVisibleSize();

    //新建熊猫sprite
    Sprite* panda_spr1 = Sprite::create("panda2.png");
    panda_spr1->setPosition(ccp(visiableSize.width / 2 - 200, visiableSize.height / 2));
    this->addChild(panda_spr1);

    //两个参数,前者动作时间3秒,后者执行次数,10次
    Blink* blinkAct = Blink::create(3.0f,10);
    panda_spr1->runAction(blinkAct);

~~~

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