Cocos2d-x的Action操作基础和回调方式

动作主要分为延时动作和瞬时动作,除了动作还有联合动作和动画等一系列的操作。

瞬时动作:

延时动作:

联合动作:

动画:

对于动作的结束监听主要通过回调函数CallFunc,它可以被看成是一个Action,因此可以被加在一个执行的动作序列中间。

C++11可以使用Lambda表达式和bind来编写函数,因此使得回到函数的功用更加灵活和丰富。

 1 bool ActionScene::init(){
 2     if (!Layer::init()){
 3         return false;
 4     }
 5
 6     auto visibleSize = Director::getInstance()->getVisibleSize();
 7     auto sprite = Sprite::create("sprite.png");
 8     sprite->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
 9     this->addChild(sprite);
10
11     auto actionFlipX = FlipX::create(true);
12     auto actionFlipY = FlipY::create(true);
13
14     auto actionHide = Hide::create();
15     auto actionShow = Show::create();
16
17     auto actionMove1 = MoveTo::create(0.9f,Vec2(200,100));
18     auto actionMove2 = MoveBy::create(0.9f, Vec2(200, 100));
19
20     auto actionScale1 = ScaleTo::create(2.8f, 0.4f, 1.0f);
21     auto actionScale2 = ScaleBy::create(1.5f, 0.5, 1.0f);
22
23     auto actionRotate1 = RotateTo::create(2.0f, 40.0f);
24     auto actionRotate2 = RotateBy::create(2.0f, 90.0f);
25
26     auto actionFadeIn = FadeIn::create(2.0f);
27     auto actionFadeOut = FadeOut::create(2.0f);
28
29     auto actionTint1 = TintTo::create(2.0f, Color3B(0, 255.0f, 0));
30
31     auto actionJump1 = JumpTo::create(2.0f, Vec2(200, 100), 50, 10);
32     auto actionJump2 = JumpBy::create(2.0f, Vec2(200, 100), 50, 10);
33
34     auto actionSkew1 = SkewTo::create(2.0f, 30, 0);
35     auto actionSkew2 = SkewBy::create(2.0f, 0, 30);
36
37     auto actionBlink1 = Blink::create(2.0f, 5);
38
39     /*曲线运动*/
40     auto aarray = PointArray::create(20);
41     aarray->addControlPoint(Vec2(100, 0));
42     aarray->addControlPoint(Vec2(200, 250));
43     auto actionCardingSpline1 = CardinalSplineTo::create(2.0f, aarray, 10);
44     auto actionCardingSpline2 = CardinalSplineBy::create(2.0f, aarray, 10);
45
46     /*贝塞尔曲线运动*/
47     ccBezierConfig config_bezier;
48     config_bezier.controlPoint_1 = Vec2(100, 0);
49     config_bezier.controlPoint_2 = Vec2(200, 250);
50     config_bezier.endPosition = Vec2(300, 50);
51     auto actionBezier1 = BezierTo::create(2.0f, config_bezier);
52     auto actionBezier2 = BezierBy::create(2.0f, config_bezier);
53
54     auto actionSequence1 = Sequence::create(actionScale1, actionSkew1, actionTint1, nullptr);
55     auto actionSpawn1 = Spawn::create(actionSkew2, actionScale2, actionMove2, nullptr);
56     auto actionRepeat1 = Repeat::create(actionJump2, 6);
57     auto actionRepeatForever1 = RepeatForever::create(actionJump1);
58
59     auto actionDelayTime1 = DelayTime::create(2);
60     auto actionSequence2 = Sequence::create(actionScale1, actionDelayTime1, actionTint1, nullptr);
61
62     /*动画播放*/
63     Vector<SpriteFrame *> animFrames;
64     animFrames.pushBack(SpriteFrame::create("sprite.png", Rect(0, 0, 65, 81)));
65     animFrames.pushBack(SpriteFrame::create("sprite2.png", Rect(0, 0, 65, 81)));
66     animFrames.pushBack(SpriteFrame::create("sprite3.png", Rect(0, 0, 65, 81)));
67     auto animation = Animation::createWithSpriteFrames(animFrames, 2.0f);
68     auto animate = Animate::create(animation);
69
70     /*时间曲线*/
71     auto actionEasy1 = EaseBounceIn::create(actionJump1);
72
73     /*演示动作完成的回调函数*/
74     auto callFunc = CallFunc::create([](){
75         CCLOG("World");
76     });
77     auto actionSequence3 = Sequence::create(actionScale1, callFunc, nullptr);
78
79
80     sprite->runAction(actionSequence3);
81
82     return true;
83 }

以上。

时间: 2024-12-27 23:43:31

Cocos2d-x的Action操作基础和回调方式的相关文章

WCF分布式开发步步为赢(10):请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back).

WCF除了支持经典的请求应答(Request-Reply)模式外,还提供了什么操作调用模式,他们有什么不同以及我们如何在开发中使用这些操作调用模式.今天本节文章里会详细介绍.WCF分布式开发步步为赢(10):请求应答(Request-Reply).单向操作(One-Way).回调操作(Call Back).本文结构:[1]请求应答(Request-Reply).[2]单向操作(One-Way).[3]回调操作(Call Back).[4]示例代码分析.[5]总结.最后上传本文的示例代码. WCF

Spark常用函数讲解--Action操作

摘要: RDD:弹性分布式数据集,是一种特殊集合 ‚ 支持多种来源 ‚ 有容错机制 ‚ 可以被缓存 ‚ 支持并行操作,一个RDD代表一个分区里的数据集RDD有两种操作算子:         Transformation(转换):Transformation属于延迟计算,当一个RDD转换成另一个RDD时并没有立即进行转换,仅仅是记住       了数据集的逻辑操作         Ation(执行):触发Spark作业的运行,真正触发转换算子的计算 本系列主要讲解Spark中常用的函数操作:   

spark transformation与action操作函数

一.Transformation map(func) 返回一个新的分布式数据集,由每个原元素经过函数处理后的新元素组成 filter(func) 返回一个新的数据集,经过fun函数处理后返回值为true的原元素组成 flatMap(func) 类似于map,但每个输入元素会被映射为0个或多个输出元素 mapPartitions(func)  类似于map,对RDD的每个分区起作用 intersection(otherDataset) 求两个RDD的交集 distinct([numTasks])

CKFinder 弹出窗口操作并设置回调函数

CKFinder 弹出窗口操作并设置回调函数 官方例子参考CKFinderJava-2.4.1/ckfinder/_samples/popup.html 写一个与EXT集成的小例子 Ext.define("MyButton", { extend : "Ext.Button", text : "ckfinder", initComponent : function() { var me = this; Ext.apply(me, { handler

DedeCMS操作基础(一)

声明:本文章以Dedecms v5.7为例. 首先,我们先来了几一下DedeCMS的文件结构目录,如下: ..../install     安装程序目录,安装完后可删除[安装时必须有可写入权限] ..../dede        默认后台管理目录(可任意改名) ..../include     类库文件目录 ..../plus        附助程序目录 ..../member      会员目录 ..../images      系统默认模板图片存放目录 ..../uploads     默认

OpenCV视频序列操作基础

 从视频序列中抓取一帧 OpenCV支持从摄像头或视频文件(AVI)中抓取图像. 从摄像头获取初始化: CvCapture* capture = cvCaptureFromCAM(0); // capture from video device #0 从视频文件获取初始化: CvCapture* capture = cvCaptureFromAVI("infile.avi"); 抓取帧: IplImage* img = 0; if(!cvGrabFrame(capture)){  

(五)Struts之Action类基础(二)

上一章节末((三)Struts之Action类基础(一))介绍了如何获取用户输入数据的获取.接着就是在Struts中怎么把数据响应给用户端,这就必须要求我们把数据放到作用域中,然后才能显示到用户浏览器. 一.将数据放到作用域并在用户浏览器中显示 A. 使用Servlet原生作用域(request.session.servletContext) index.jsp <%@ page language="java" contentType="text/html; chars

Action 操作

当鼠标移动到图片文件夹的时候,将有一些button显示 当鼠标移开这个文件夹,那些button隐藏了起来 display属性的变化 1.可以使用Js改变属性来操作 暂未验证,待时间. 2.可以使用Action来操作 // 打开Folder操作 var openFolderTableElement = driver.FindElement( By.CssSelector("table[data-name='图片']")); var mouseOverAction = new OpenQA

ThinkPHP的操作基础(二)

1.$readTime_rank_result=M('blog')->order('bReadTime DESC')->limit(3)->select(): a.返回值为数据集,可以用一下的方法在前台输出: <volist name="readTime" id="r"> {$r.Id} nbsp; {$r.Time} </br>  //或是:{$r['Id']} nbsp; {$r['Time']} </volist