现在的位置: 首页 > 综合 > 正文

cocos2dx 3.1.1官方demo阅读-ActionsTest【基础动作】

2017年12月22日 ⁄ 综合 ⁄ 共 9186字 ⁄ 字号 评论关闭

常见变换

MoveTo/MoveBy:位置变换(移动到某个位置/移动某个偏移量)

RotateTo/RotataBy角度变换

RotateTo::create(2, 61.0f);

RotateTo::create(2, 180, 180);   // ActionRotationalSkew

RotateBy::create(4, Vec3(360, 0, 0));传入一个三维向量  //ActionRotateBy3D

ScaleTo/ScaleBy缩放变换

SkewTo/SkewBy(dt,sx,sy)偏度变换

       sx,sy分别 x轴,y轴的偏移角度。

JumpTo/JumpBy 跳跃(float duration, const Vec2& position, float height, int jumps) 时间,位置偏移,高度,次数

CardinalSplineBy duration,array,tension  tension表示松弛程度

球面坐标

 

下面是代码,部分参考http://bbs.9ria.com/thread-199302-1-1.html

		Size visbleSize=Director::getInstance()->getVisibleSize();

		auto sprite=Sprite::create("hero.png");
		sprite->setPosition(visbleSize.width/2,visbleSize.height/2);
		this->addChild(sprite);
		//DelayTime延时几秒  
		//参数1:延时的时间
		DelayTime* delayAction=DelayTime::create(2);
		
		////MoveTo/MoveBy  创建一个移动动作
		////参数1:移动所需时间   参数2:移动到的位置
		//auto moveTo=MoveTo::create(2,Vec2(visbleSize.width/4,visbleSize.height/4));
		//sprite->runAction(moveTo);
	

		////RotateTo/RotateBy  创建一个角度变换动作(旋转中心在锚点)
		////参数1::角度变换所需要的时间  参数2(float):变换的角度
		//auto rotateTo=RotateTo::create(2,90);
		//sprite->runAction(rotateTo);
		 
		////RotateTo/RotateBy  创建一个角度变换动作(旋转中心在锚点所在的x,y轴)
		////参数1::角度变换所需要的时间  参数2,参数3(float):沿x,y轴旋转的角度
		//auto rotateTo=RotateTo::create(2,0,180);   //翻转图片180
		//sprite->runAction(rotateTo);

		////RotateBy in 3D  创建一个角度变换动作 (3D)
		////参数1::角度变换所需要的时间  参数2,参数3,参数4(float):沿x,y,z轴旋转的角度
		//auto rotateBy3D=RotateBy::create(2,Vec3(0,0,90));    
		//sprite->runAction(rotateBy3D);

		////ScaleTo/ScaleBy 创建一个缩放变换动作
		////参数1::缩放变换所需要的时间  参数2,参数3(float):缩放的倍数
		//auto scaleTo=ScaleTo::create(2,1,2);    
		//sprite->runAction(scaleTo);
		//return true;

		////SkewTo/SkewBy 创建一个倾斜变换动作
		////参数1::倾斜变换所需要的时间  参数2,参数3(float):x,y轴向z轴倾斜的角度
		//auto skewTo=SkewBy::create(2,0,45);    
		//sprite->runAction(skewTo);
		//return true;

		////JumpTo/JumpBy 创建一个跳跃动作
		////参数1::跳跃所需要的时间  参数2:跳跃到的位置   参数3:跳跃的高度   参数4:跳跃次数
		//auto jumpTo=JumpTo::create(2,ccp(400,300),80,3);    
		//sprite->runAction(jumpTo);
		//return true;
		

		////BezierTo 创建一个贝塞尔曲线运动动作
		////ccBezierConfig结构体  
		// ccBezierConfig bezier;
		////设置bezier的三个关键点
		//sprite->setPosition(0,0);
		//bezier.controlPoint_1=Vec2(0,0);
		//bezier.controlPoint_2=Vec2(100,200);
		//bezier.endPosition=Vec2(400,300);
		//
		////创建Bezier运动
		////参数1:运动所需要的时间   参数2:ccBezierConfig结构体 
		//auto bezierTo=BezierTo::create(3,bezier); 
		//sprite->runAction(bezierTo);

 
		////FadeIn/FadeOut   渐变出现/渐变消失
		////参数1:渐变时间
		//auto fadeIn=FadeIn::create(2);
		//auto fadeOut=FadeOut::create(2);
		//auto seqAction=Sequence::create(fadeOut,DelayTime::create(2),fadeIn,NULL);
		//sprite->runAction(seqAction);

		////TintTo 创建一个色彩变化到目标颜色的动作,不支持reverse()方法
		////参数1::所需要的时间  参数2,3,4:渐变的颜色值  
		//auto tintTo=TintTo::create(2,255,255,0);
		//sprite->runAction(tintTo);
		//return true;

		////TintTo 创建目标颜色消失的动作,支持reverse()方法
		////参数1::所需要的时间  参数2,3,4:渐变的颜色值  
		//auto tintBy=TintBy::create(2,255,255,0);
		//sprite->runAction(tintBy);

		////Blink 创建一个闪烁的动作
		////参数1::所需要的时间  参数2:闪烁次数 
		//auto blink=Blink::create(2,4);
		//sprite->runAction(blink);
		
		  //  //OrbitCamera
		  //  //作用:创建一个球面坐标轨迹进行旋转的动作
		  //  //参数1 : 旋转轨迹的时间
		  //  //参数2 :起始半径
		  //  //参数3:半径差
		  //  //参数4:起始z角(z轴与y轴所成的角)   图中θ
		  //  //参数5:旋转z角的差
		  //  //参数6:起始x角(x轴与y轴所成的角)   图中φ
		  //  //参数7:旋转x角的差
		  //ActionInterval * orbitcamera = OrbitCamera::create(3, 10, 0, 45, 180, 90, 0);
		  //sprite->runAction(orbitcamera);
		
		  //    CardinalSpline
		  //    作用:创建数组  点的数组
		  PointArray * array = PointArray::create(20);
		  array->addControlPoint(ccp(0,0));
		  array->addControlPoint(ccp(210,0));
		  array->addControlPoint(ccp(210,240));
		  array->addControlPoint(ccp(0,160));
		  array->addControlPoint(ccp(0,0));


		  ////    CardinalSplineTo/CardinalSplineBy
		  ////    作用:创建一个样条曲线轨迹的动作
		  ////    参数1:完成轨迹所需的时间
		  ////    参数2:控制点的坐标数组
		  ////    拟合度  其值= 0 路径最柔和
		  //auto  cardinalSplineTo=CardinalSplineTo::create(3, array, 0);
		  //sprite->runAction(cardinalSplineTo);
 
		  ////    CatmullRomTo  CatmullRomBY
		  ////    作用:创建一个样条插值轨迹
		  ////    参数1:完成轨迹的时间
		  ////    参数2:控制点的数组坐标
		  //ActionInterval * catmullRomTo = CatmullRomTo::create(3, array);
		  //sprite->runAction(catmullRomTo);
		
		  ////    Follow
		  ////    作用:创建一个跟随动作
		  ////    参数1:跟随的目标对象
		  ////    跟随范围,离开范围就不再跟随,用于层跟踪英雄镜头
		  ////创建一个参照物ref
		  ////mark一下 还是不太清楚第二个参数Rect的作用
		  //auto ref=Sprite::create("ref.png");
		  //this->addChild(ref);

		  //ref->setPosition(visbleSize.width/2+20,visbleSize.height/2);

		  //sprite->runAction(MoveBy::create(6,Vec2(400,0)));
		  //auto follow=Follow::create(sprite,Rect(0,0,700,160));
		  //this->runAction(follow);


		  //    EaseBounceIn
		  //    目标动作
		  //    ActionInterval* move = MoveTo::create(3, ccp(300, sprite->getPositionY()));
		  ////    让目标动作缓慢开始
		  ////    参数:目标动作
		  //    ActionInterval * EaseBounceIn = EaseBounceIn::create(move);
		  //    sprite->runAction(EaseBounceIn);

		  //EaseBounceOut
		  //    作用:让目标动作赋予反弹力,且以目标动作结束位子开始反弹
		  //    参数目标动作
		  //    ActionInterval * easeBounceOut = EaseBounceOut ::create(move);
		  //    sprite->runAction(easeBounceOut);

		  //    EaseBounceInOut
		  //    作用:让目标动作赋予反弹力,且以目标动作起始与结束位子开始反弹
		  //    ActionInterval * easeBounceInOut= EaseBounceInOut::create(move);
		  //    sprite->runAction(easeBounceInOut);

		  //   EaseBackIn
		  //    作用:让目标动作赋予回力 , 且以目标动作起点位置作为回力点
		  //    参数:目标动作
		  //    ActionInterval * easeBackIn = EaseBackIn::create(move);
		  //    sprite->runAction(easeBackIn);

		  //    EaseBackOut
		  //    作用:让目标动作赋予回力 , 且以目标动作终点位置作为回力点
		  //    参数:目标动作
		  //    ActionInterval *easeBackOut = EaseBackOut::create(move);
		  //    sprite->runAction(easeBackOut);

		  //    EaseBackInOut
		  //    作用:让目标动作赋予回力 , 且以目标动作起点和终点位置作为回力点
		  //    参数:目标动作
		  //    ActionInterval * easeBackInOut = EaseBackInOut::create(move);
		  //    sprite->runAction(easeBackInOut);

		  //    EaseElasticIn
		  //    作用:让目标动作赋予弹性 ,且以目标动作起点位子赋予弹性
		  //     参数:目标动作
		  //    ActionInterval * easeElasticIn= EaseElasticIn::create(move);
		  //    sprite->runAction(easeElasticIn);

		  //     EaseElasticOut
		  //    作用:让目标动作赋予弹性 ,且以目标动作终点位子赋予弹性
		  //     参数:目标动作
		  //    ActionInterval *easeElasticOut = EaseElasticOut::create(move);
		  //    sprite->runAction(easeElasticOut);

		  //    EaseElasticInOut
		  //    作用:让目标动作赋予弹性 ,且以目标动作起点和终点位子赋予弹性
		  //     参数:目标动作
		  //    ActionInterval *easeElasticInOut = EaseElasticOut::create(move);
		  //    sprite->runAction(easeElasticInOut);

		  //    EaseExponentialIn
		  //    让目标动作缓慢开始
		  //    参数:目标动作
		  //    ActionInterval * easeExponentialIn= EaseExponentialIn::create(move);
		  //    sprite->runAction(easeExponentialIn);

		  //    EaseExponentialOut
		  //    让目标动作缓慢中止
		  //    参数:目标动作
		  //    ActionInterval * easeExponentialIn= EaseExponentialOut::create(move);
		  //    sprite->runAction(easeExponentialIn);

		  //    EaseExponentialInOut
		  //    让目标动作缓慢开始和中止
		  //    参数:目标动作
		  //    ActionInterval * easeExponentialInOut= EaseExponentialInOut::create(move);
		  //    sprite->runAction(easeExponentialInOut);

		  //    EaseRateAction
		  //    作用 : 让目标动作设置速率
		  //    参数1:目标动作
		  //    参数2:速率
		  //    ActionInterval * move = MoveTo::create(5, ccp(300,sprite->getPositionY()));
		  //    ActionInterval * easeRateAction = EaseRateAction::create(move, 3);
		  //    sprite->runAction(easeRateAction);

		  //    EaseSineIn
		  //    作用:动作由慢到快
		  //      参数:目标动作
		  //    ActionInterval * easeSineIn = EaseSineIn::create(move);
		  //    sprite->runAction(easeSineIn);

		  //    EaseSineOut
		  //    作用:动作由快到慢
		  //      参数:目标动作
		  //    ActionInterval * easeSineOut = EaseSineOut::create(move);
		  //    sprite->runAction(easeSineOut);

		  //    EaseSineInOut
		  //    作用:动作由慢到快再快到慢
		  //      参数:目标动作
		  //    ActionInterval * easeSineInOut = EaseSineInOut::create(move);
		  //    sprite->runAction(easeSineInOut);

		  //    Speed
		  //    作用:让目标动作运行速度加倍
		  //    参数1:目标动作
		  //    参数2:倍速
		  //        ActionInterval * move = MoveTo::create(10, ccp(300,sprite->getPositionY()));
		  //    Speed * speed =Speed::create(move, 100);
		  //    sprite->runAction(speed);

		  //    Spawn
		  //  作用:让多个动作同时执行
		  //    参数:目标动作的可变参数
		  //    ActionInterval * move = MoveTo::create(10, ccp(300,sprite->getPositionY()));
		  //    ActionInterval * scale = ScaleTo::create(2, 3);
		  //    ActionInterval * rotate = RotateTo::create(4, 190);
		  //    FiniteTimeAction * spawn =Spawn::create(move,scale,rotate,NULL);
		  //    sprite->runAction(spawn);

		  //    Sequence
		  //    作用:让多个动作按照前后顺序逐一执行
		  //    参数:目标动作的可变参数
		  //    ActionInterval * move = MoveTo::create(2, ccp(300, sprite->getPositionY()));
		  //    ActionInterval * scale = ScaleTo::create(2, 3);
		  //    FiniteTimeAction * seq= Sequence::create(move,scale,NULL);
		  //    sprite->runAction(seq);
		  //    扩展如果要对目标动作全部进行方向运动,可以使用如下形式操作
		  //    FiniteTimeAction *seq=Sequence::create(moveby,scaleby,...NULL);
		  //    FiniteTimeAction * reverseseq = Sequence::create(seq,seq->reverse(),NULL)
		  //    注意Sequence中的所有动作都必须支持reverse函数,否则会出现异常
		  //    ActionInterval * move = MoveBy::create(2, ccp(300, sprite->getPositionY()));
		  //    ActionInterval * scale = ScaleBy::create(2, 3);
		  //    FiniteTimeAction * seq= Sequence::create(move,scale,NULL);
		  //    FiniteTimeAction * reveseseq = Sequence::create(seq,seq->reverse(),NULL);
		  //    sprite->runAction(reveseseq);

		  //    Repeat
		  //    作用:对目标动作进行重复运动(目标动作可以是Sequence ,Spawn)
		  //    参数1:目标动作
		  //    参数2:重复次数
		  //    ActionInterval * move = MoveTo::create(2, ccp(300, sprite->getPositionY()));
		  //    ActionInterval * move2 = MoveTo::create(2, ccp(100,100));
		  //    FiniteTimeAction*seq =Sequence::create(move,move2,NULL);
		  //    FiniteTimeAction *repeat = Repeat::create(seq, 3);
		  //    sprite->runAction(repeat);

		  //    RepeatForever
		  //    作用:对目标动作进行永久性的重复运动(目标动作可以是Sequence ,Spawn)
		  //    参数:目标动作
		  //    ActionInterval * move = MoveTo::create(1, ccp(300, sprite->getPositionY()));
		  //    ActionInterval * move1 = MoveTo::create(1, ccp(100,100));
		  //    FiniteTimeAction* seq = Sequence::create(move,move1,NULL);
		  //    ActionInterval * repeatForever =RepeatForever::create((ActionInterval* )seq);
		  //    sprite->runAction(repeatForever);

		  //    CallFunc
		  //    作用:创建一个回调动作(调用不带参数的回调方法);
		  //    参数1:目标动作
		  //    参数2:目标回调函数
		  //    ActionInterval * move = MoveTo::create(1, ccp(300, sprite->getPositionY()));
		  //    CallFunc * funcall= CallFunc::create(this, callfunc_selector(HelloWorld::callbackC));
		  //    FiniteTimeAction * seq = Sequence::create(move,funcall,NULL);
		  //    sprite->runAction(seq);

		  //    CallFuncN
		  //    作用:创建一个回调动作(调用 带一个参数的回调方法);
		  //    参数1:目标动作
		  //    参数2:目标回调函数
		  //    ActionInterval * move = MoveTo::create(1, ccp(300, sprite->getPositionY()));
		  //    CallFuncN * funcall= CallFuncN::create(this, callfuncN_selector(HelloWorld::callbackN));
		  //    FiniteTimeAction * seq = Sequence::create(move,funcall,NULL);
		  //    sprite->runAction(seq);

		  ////    CallFuncND
		  ////    作用:创建一个回调动作(调用 带两个参数的回调方法);
		  ////    参数1:目标动作
		  ////    参数2:目标回调函数
		  //ActionInterval * move = MoveTo::create(1, ccp(300, sprite->getPositionY()));
		  //CallFuncND * funcall= CallFuncND::create(this, callfuncND_selector(HelloWorld::callbackND)  ,(void*)0xbebabeba);
		  //FiniteTimeAction * seq = Sequence::create(move,funcall,NULL);

抱歉!评论已关闭.