Cocos2dx 小技巧(十一) 小人虽短,但能够旋转
我也有思考过假设女友和我同居(前提是有个女友),或者结婚啥的,那我下班后还会有这么多时间学习新技术么?个人觉得难。所以啊,趁青春正好,趁阳光不老,赶紧该干嘛干嘛去!
---
“非常短,但能够旋转”,这是LOL讲解小智常调侃的一句话,所以本篇也讲下怎样做出“旋转”的效果。(呵呵,不知道你们有没有注意到这是一句冷笑话)
说起来非常不好意思,我居然才知道cocos2dx 有OrbitCamera的这样的接口(不是RotateTo),赶紧到testCpp里看了下,还真有,曾经居然没注意到!我果然还是太单纯了!
接口是酱紫的:
/** creates a OrbitCamera action with radius, delta-radius, z, deltaZ, x, deltaX */
static OrbitCamera* create(float t, float radius, float deltaRadius, float angleZ, float deltaAngleZ, float angleX, float deltaAngleX);
这參数多的让我头晕,到网上查了下意思,是用到了球坐标,參数各自是:旋转的时间,起始半径,半径差,起始z角,旋转z角差,起始x角,旋转x角差。这解释够具体了吧,可我还是没全搞懂~~~~。没办法,自己创建了个小人来转一转:
auto boy = Sprite::create("boy.png");
boy->setPosition(Point(300,300));
this->addChild(boy,2); boy->runAction(OrbitCamera::create(2.0f,1,0,0,180,0,0));
更改參数重复执行后找到了那么点门道:
第一个參数是旋转时间这个就不用说了;radius起始半径,仅仅要大于0效果都一样;deltaRadius半径差是什么东东,没看到啥门道来;angleZ起始Z角,就是看你要从哪个角度開始旋转(水平方向的),deltaAngleZ旋转Z角差,也就是要让图片旋转几度,360是一圈;至于起始X角和起始X角差,就是控制竖直方向的旋转。
发现并没有一个Y角差啥的,个人分析是x,y是处于一个平面,该平面垂直Z,所以X,Y旋转的效果是一样的。(假设你有更深入的看法,一定要告诉我!!!)
以下就做个旋转的样例吧:
本来是要做旋转的卡牌,这样起码名字看起来高端大气上档次,可是考虑到没有卡牌的素材(假设你有的话,请务必发给我一些),所以我就弄成旋转的小人,我们都知道卡牌都有正面和反面,这样转才有旋转的效果,所以我们的小人也该有正反,正面是boy图片,背面就是girl的图片。看到这里有人要吐槽了:boy背面怎么会是girl?你坑谁?我仅仅想说:淡定点骚年,常言道,每一个成功的男淫背后都靠着一个女人,所以,你别乱推測我没有boy的背面图,我仅仅是...反正别乱想。
流程例如以下:
1、创建boy和girl两个精灵,初始位置要一样,girl一開始要隐身。让他俩同一时候開始旋转!2s为1圈,即360°。
2、当boy旋转到90°时,也就是0.5s后要隐身,girl显示出来了;
3、girl旋转1s,也就是180°后,girl隐身,boy显示出来了。这样一直转下去。
以下看代码实现:
auto boy = Sprite::create("boy.png");
boy->setPosition(Point(300,300));
this->addChild(boy,2); auto girl = Sprite::create("girl_1.png");
girl->setPosition(Point(300,300));
girl->setVisible(false);//一開始设置为不可见
this->addChild(girl,2); auto seq1 = Sequence::create(DelayTime::create(0.5f),
Hide::create(),//0.5s后隐身,
DelayTime::create(1.0f),
Show::create(),//再过1s后现身
nullptr); auto rotate1 = OrbitCamera::create(2.0f,1,0,0,360,0,0); auto seq2 = Sequence::create(DelayTime::create(0.5f),
Show::create(),//0.5s后现身
DelayTime::create(1.0f),
Hide::create(),//再过1s后隐身
nullptr); auto rotate2 = rotate1->clone(); boy->runAction(RepeatForever::create(Spawn::create(rotate1,seq1,nullptr)));
girl->runAction(RepeatForever::create(Spawn::create(rotate2,seq2,nullptr)));
恩,执行如图:
顺便提下Show与Hide两个接口,它俩相似我们熟知的FadeIn,FadeOut,让对象隐身或者显示。但Fade须要时间參数,而Show,Hide不用。还是蛮好用的
就说到这里吧。
尊重原创,转载请注明来源:http://blog.csdn.net/star530/article/details/24836121
Cocos2dx 小技巧(十一) 小人虽短,但能够旋转的更多相关文章
- Cocos2dx 小技巧(十三)聊聊坐标系
一好友考上了空姐.她说:以后基本上不会回来了.等下次见面时请叫我白富美!尽管有点羡慕.但我依然不甘示弱回复:下次见面时请叫我高富帅! 未来,谁说得准呢? ------------------有段时间没 ...
- 【cocos2dx 小技巧】半透明屏蔽罩和弹出框的实现
今天介绍一下,弹出框的和屏蔽罩的小实现~ 弹出框主要用到了cocos2dx生命周期里面的OnEnter()函数,就是当Layer被addChild的时候会调用的函数(所以假设把OnEnter的代码加到 ...
- Cocos2dx 小技巧(九)现成的粒子特效
和高中的她 差点儿相同有两三年没见面了吧.下午她正好来泉州.我俩出来一起吃了个饭. 怎么说呢,自从高中毕业后我俩的联系就少了非常多.大学期间也就见过两三面吧. 现在毕业也快一年了,她已是人妇,而我自己 ...
- cocos2d-x 小技巧
1.字符串 与 数据结构互转 CCPoint: CCPointFromString(); {x, y} CCSize: CCSizeFromString(); {w, h} CCRect: CCSiz ...
- Cocos2dx 小技巧(十四)ScrollView实现缩放效果
这阶段心绪比較乱,所以这篇开头就不扯淡了.(谁说大姨夫来了我跟谁急!~~)说到大姨夫我突然想到英雄联盟有个美女讲解叫伊芙蕾亚,她的堂弟ID居然叫:姨夫累呀,好笑吧(呵呵,有点冷~~额,我都说不扯淡了) ...
- Cocos2dx 小技巧(十五)话说ScrollView的delegate实现过程
附:本文參加了CSDN博客大赛.亲假设认为这篇文章不错,就大胆的来投上一票吧! !!http://vote.blog.csdn.net/Article/Details? articleid=34140 ...
- Cocos2dx 小技巧(十二) 一种可行的系列动画播放方式
今早发生了一件事让我感觉特气愤!去年的这个时候,我和小伙伴们一起在操场上拍毕业照,之后有个当地报纸的记者来我们学校取材,看到我们后打算给我们拍几张创意张扬点的毕业照.之后呢,照片出来了,拍的效果大伙都 ...
- Cocos2dx 小技巧(十六)再谈visit(getDescription)
之前两篇都是介绍与Value相关的,这篇我继续这个话题吧,正好凑个"Value三板斧系列...".在非常久非常久曾经.我用写过一篇博客,关于怎样查看CCArray与CCDictio ...
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
IT咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
随机推荐
- 开源布局控件 WeifenLuo.WinFormsUI.Docking.dll使用
WeifenLuo.WinFormsUI.Docking是一个很强大的界面布局控件,可以保存自定义的布局为XML文件,可以加载XML配置文件.! 先看一下效果 使用说明: 1.新建一个WinForm程 ...
- VS2005工程增加SDK
客户最近发过来一个VS2005的工程,此工程是基于Pocket PC 2003(ARMV4),需要改为我们WINCE6.0系统对应的SDK,下面具体说明如何添加新的SDK. 选择configurati ...
- UVa 294 (因数的个数) Divisors
题意: 求区间[L, U]的正因数的个数. 分析: 有这样一条公式,将n分解为,则n的正因数的个数为 事先打好素数表,按照上面的公式统计出最大值即可. #include <cstdio> ...
- ExecutorService与Executors例子的简单剖析
对于多线程有了一点了解之后,那么来看看java.lang.concurrent包下面的一些东西.在此之前,我们运行一个线程都是显式调用了Thread的start()方法.我们用concurrent下面 ...
- I.MX6 bq27441 driver hacking
/************************************************************************* * I.MX6 bq27441 driver ha ...
- (五)学习JavaScript之firstChild 属性
参考:http://www.w3school.com.cn/jsref/prop_node_firstchild.asp 定义和用法 firstChild 属性返回指定节点的首个子节点,以 Node ...
- 消息系统Kafka介绍
1. 概述 Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数 据.活跃的流式数据在web网站应用中非常常见,这 些数据包括网站的pv.用户访问了什么内容,搜 ...
- 《深入Java虚拟机学习笔记》- 第10章 栈和局部变量操作
Java栈和局部变量操作 Java虚拟机是基于栈的机器,几乎所有Java虚拟机的指令都与操作数栈相关.栈操作包括把常量压入操作数栈.执行通用的栈操作.在操作数栈和局部变量之间往返传输值. 1常量入栈操 ...
- C++ static_cast dynamic_cast reinterpret_cast const_cast转换
static_cast <type-id> ( expression ) 和C风格的类型转换相似,可以转换一个指针到基类,或者派生类.不做Run-time类型检查,这样转换并不总是安全的. ...
- 介绍并扩展Fitnesse的测试模块化机制:ScenarioTable
摘要:在验收测试框架Fitneese中,使用Scenario可以把最常用的测试步骤封装起来,从而达到模块化定义Fitnesse测试用例的能力.但Scenario仅限于封装Script测试步骤,Scri ...