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咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
随机推荐
- Android开发之MediaPlayer类
官网关于MediaPlayer类的使用简介:
- WPF程序中处理Windows消息
首先通过WindowInteropHelper类,我们可以获取WPF Window的Handle. WindowInteropHelper helper = new WindowInteropHelp ...
- I.MX6 U-boot GPIO hacking
/******************************************************************************* * I.MX6 U-boot GPIO ...
- ↗☻【编写可维护的JavaScript #BOOK#】第8章 避免“空比较”
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- 【 D3.js 高级系列 — 5.0 】 颜色
颜色是作图不可少的概念,常用的标准有 RGB 和 HSL,D3 提供了创建颜色对象的方法,能够相互转换和插值. RGB色彩模式是通过对红(Red).绿(Green).蓝(Blue)三个颜色通道相互叠加 ...
- Java [leetcode 37]Sudoku Solver
题目描述: Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated ...
- 多线程程序设计学习(11)Two-phapse-Termination pattern
Two-phapse-Termination[A终止B线程] 一:Two-phapse-Termination的参与者--->A线程--->B线程 二:Two-phapse-Termina ...
- 【Android】Android ListViewAnimations分析
使用:https://github.com/android-cn/android-open-project-demo/tree/master/listview-animations-demo APK例 ...
- CXF之二(CXF发布webService)
Apache CXF提供了用于方便地构建和开发WebService的可靠基础架构.它允许创建高性能和可扩展的服务,可以部署在Tomcat和基于spring的轻量级容器中,也可以部署在更高级的服务器上, ...
- Oracle函数面试题
1.对字符串操作的函数? 答:ASCII() –函数返回字符表达式最左端字符的ASCII 码值 CHR() –函数用于将ASCII 码转换为字符 –如果没有输入0 ~ 255 之间的ASCII 码值C ...