您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x 之动作 Action

2017-07-13 18:58 211 查看

瞬时动作 VS 持续动作

Cocos2d中的动作主要分为两大类,瞬时动作Instant和持续动作Interval。

auto sprite=Sprite::createWithTexture(img4);
sprite->setPosition(visibleSize/2);
sprite->setScale(3.5);
this->addChild(sprite);

auto sprite2 = Sprite::createWithTexture(img2);
sprite2->setPosition(0, 0);
sprite2->setOpacity(1);
this->addChild(sprite2);

auto sprite3 = Sprite::createWithTexture(img3);
sprite3->setPosition(200, 0);
this->addChild(sprite3);

auto sprite4 = Sprite::createWithTexture(img4);
sprite4->setPosition(250, 100);
this->addChild(sprite4);

auto sprite5 = Sprite::createWithTexture(img5);
sprite5->setPosition(390, 200);
this->addChild(sprite5);

//移动、旋转、缩放
//顺序动作、合并动作
sprite->runAction(Sequence::create(MoveTo::create(0.5f, Vec2(50, 50)), ScaleTo::create(0.5f, 1.0f), RotateBy::create(0.8f, Vec3(0, 0, 360)), CallFunc::create([sprite]() {
sprite->runAction(Spawn::create(MoveBy::create(1.0f, Vec2(100, 100)), ScaleBy::create(1.0f, 2.0f), RotateBy::create(1.0f, Vec3(0, 0, 180)),NULL));
}),NULL));

//出现、重复动作
auto move2=MoveBy::create(4,Vec2(100,100));
auto fadeIn=FadeIn::create(4.0f);
auto rotate=RotateBy::create(4.0f,360);
auto spawn=Spawn::create(move2,fadeIn,NULL);
sprite2->runAction(Repeat::create(Sequence::create(spawn,rotate,rotate->reverse(),spawn->reverse(),NULL),3));

//闪烁、不断重复
auto jump=JumpBy::create(3,Vec2(0,0),100,1);
auto shrink=Blink::create(3,8);
sprite3->runAction(RepeatForever::create(Spawn::create(jump,shrink,NULL)));

//瞬时动作,不能组合
sprite4->runAction(FlipX::create(true));
sprite4->runAction(FlipY::create(true));

//蒙版、变形、回调
sprite5->runAction(Sequence::create(TintBy::create(3,100,-100,30),TintTo::create(3,20,200,255),SkewBy::create(1,10,20),CallFunc::create([](){
CCLOG("play complete");
}),NULL));


跟场景一样,cocos2d也定义了一些动作的特效,这些特效是基于网格实现,我们只需把精灵放入网格中,再将网格加到场景中。然后就可以给这个网格使用动作特效了。

auto role=NodeGrid::create();
role->addChild(Sprite::create("girl.png"));
this->addChild(role);
role->setPosition(visibleSize/2);
role->setScale(1.5);

auto shaky=ShakyTiles3D::create(3,Size(30,30),5,false);
auto shuffle=ShuffleTiles::create(1,Size(30,30),3);
auto turnoff=TurnOffTiles::create(0.5,Size(30,30),10);
auto wave1=Waves3D::create(2,Size(30,30),5,40);
auto wave2=Waves3D::create(2,Size(30,30),0,0);
//role->runAction(Shaky3D::create(3,Size(20,20),5,false));//震动,不显示网格
//role->runAction(Sequence::create(shaky,shaky->reverse(),NULL));//震动,显示网格
//role->runAction(ShatteredTiles3D::create(1,Size(30,30),5,false));//碎片结果
//role->runAction(ShuffleTiles::create(0.1f,Size(180,180),3));//爆炸
//role->runAction(TurnOffTiles::create(2,Size(30,30),10));//碎片消失
//role->runAction(Waves3D::create(2,Size(30,30),5,40));//波浪
role->runAction(Sequence::create(shaky,shuffle,turnoff,NULL));
//role->runAction(Sequence::create(wave1,wave2,NULL));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2d-x action 动作