【Cocos2d-x3.0学习笔记 05】嗯,更进一步学习

1.Moveto和MoveBy

Moveto* moveto = Moveto::create(0.9f,Point(250,150));
sprite->runAction(moveto);
  • 一个参数:动作持续时间
  • 第二个参数:要移动的目标位置
MoveBy* moveBy = MoveBy::create(0.9f,150));
sprite->runAction(moveBy);
  • 一个参数:动作持续时间
  • 第二个参数:要移动的距离

2.Scaleto和ScaleBy

Scaleto是变成多少倍拉伸,ScaleBy是再次拉伸多少倍

Scaleto* scaleto = Scaleto::create(2.8f,0.4f,1.0f);
sprite->runAction(Scaleto);
  • 一个参数:持续时间
  • 第二个参数:X方向上的拉伸值
  • 第三个参数:Y方向上的拉伸值
ScaleBy* scaleBy = ScaleBy::create(2.8f,1.0f);
sprite->runAction(scaleBy);

3.Blink闪烁动画

Blink* blink = Blink::create(2.8f,3);
sprite->runAction(blink);
  • 一个参数:持续时间
  • 第二个参数:闪烁次数

4.BezierTo和BezierBy

贝赛尔曲线运动

//创建贝塞尔曲线的配置
ccBezierConfig config;
config.controlPoint_1 = Point(100,0);//波谷偏向值
config.controlPoint_2 = Point(200,250);//波峰偏向值
config.endPosition = Point(300,50);//动作终点
BezierTo* bezierTo= BezierTo::create(2.8f,3);
sprite->runAction(bezierTo);
BezierBy是从当前位置进行偏移的

5.RepeatForever

//创建jumpBy 作用:创建一个跳的动作
//    //    参数1:跳到目标动作位子的所需时间
//    //    参数2:目标位置
//    //    参数3:跳的高度
//    //    参数4跳到目标位置的次数
JumpBy* jumpBy= JumpBy::create(2.8f,Point(50,1),100,1);
//创建永久重复动作jump
RepeatForever* rf = RepeatForever::create(jumpBy);
//创建指定次数的jumpBy
Repeat r = Repeat::create(jumpBy,3);
sprite->runAction(rf);

6.Sequence与Spawn动作的集合

Blink* blink = Blink::create(2.8f,3);
ScaleBy* scaleBy = ScaleBy::create(2.8f,1.0f);
MoveBy* moveBy = MoveBy::create(0.9f,150));
//创建组合动作
Action* actions = Spawn::create(blink,scaleBy,moveBy,NULL);
sprite->runAction(actions);
所有动作一起执行了

将Spawn换成Sequence,动作依次执行

7.动作监听

ScaleBy* scaleBy = ScaleBy::create(2.8f,1.0f);
//回调对象也是一个动作,这个动作调用一个函数
auto myFunc = [&](){
	sayHello();
};
CallFunc* call = CallFunc::create(myFunc);
Action* actions = Sequence::create(scaleBy,call,NULL);
sprite->runAction(actions);

8.lambda函数

auto myFunc = [&](){
	sayHello();
}

[]符号中可以填写的内容

  • []:不截取任何变量
  • [&]:截取外部作用域中的变量,并且作为引用在lambda函数中使用
  • [=]:截取外部作用域中的变量,并且复制一份到lambda函数中使用
  • [=,&hehe]:和[=]功能一样,但是对hehe变量是引用
  • [hehe]:和[=]功能一样,但只针对hehe变量,其他忽略

9.屏幕触摸事件

①单点触摸

//创建
auto listener = EventListenerTouchOneByOne::create();
//触摸开始,移动,结束
listener->onTouchBegan = [](Touch* touch,Event* event){
	//取出当前点击的对象
	auto target = static_cast<Sprite*>(event->getCurrentTarget());
	
	return true;
};
listener->onTouchMoved = [](Touch* touch,Event* event){};
listener->onTouchEndEd = [](Touch* touch,Event* event){};
//截取监听,不传给其他人
listener->setSwallowtouches(true);
//注册触摸监听
_eventdispatcher->addEventListenerWithSceneGraPHPriority(listener,this);

②多点触摸
//创建
auto listener = EventListenerTouchAllAtOnce::create();
//触摸开始,移动,结束
listener->ontouchesBegan = [](const_std::vector<Touch*>& touches,Event* event){};
listener->ontouchesMoved = [](const_std::vector<Touch*>& touches,Event* event){};
listener->ontouchesEndEd = [](const_std::vector<Touch*>& touches,Event* event){};
//注册触摸监听
_eventdispatcher->addEventListenerWithSceneGraPHPriority(listener,this);

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...