cocos2dx 利用CCOrbitCamera实现扑克牌翻牌效果
- #include "HelloWorldScene.h"
- #include "SimpleAudioEngine.h"
- using namespace cocos2d;
- using namespace CocosDenshion;
- CCScene* HelloWorld::scene()
- {
- CCScene *scene = CCScene::create();
- HelloWorld *layer = HelloWorld::create();
- scene->addChild(layer);
- return scene;
- }
- bool HelloWorld::init()
- {
- if ( !CCLayer::init() )
- {
- return false;
- }
- size = CCDirector::sharedDirector()->getWinSize();
- //加一背景
- CCLayerColor* background = CCLayerColor::create(ccc4(255, 180, 255, 255), size.width, size.height);
- this->addChild(background);
- actionIsDone = true;//标示动作是否完毕
- createPoker(); //创建扑克
- return true;
- }
- //创建扑克
- void HelloWorld::createPoker()
- {
- //扑克牌正面
- CCSprite* pokerFront = CCSprite::create("poker_front.png");
- pokerFront->setVisible(false);
- pokerFront->setPosition(ccp(size.width/2, size.height/2));
- this->addChild(pokerFront,1,123);
- //扑克牌反面
- CCSprite* pokerBack = CCSprite::create("poker_back.png");
- pokerBack->setPosition(pokerFront->getPosition());
- this->addChild(pokerBack,1,321);
- }
- //翻牌动作
- void HelloWorld::startOrbitAction()
- {
- //扑克牌正面
- CCSprite* pokerFront = (CCSprite*)this->getChildByTag(123);
- //扑克牌反面
- CCSprite* pokerBack = (CCSprite*)this->getChildByTag(321);
- float orbitTime = 1;
- if (pokerFront->isVisible() == false && actionIsDone == true) {
- actionIsDone = false;
- //第一个參数是旋转的时间,第二个參数是起始半径,第三个參数半径差。第四个參数是起始Z角。
- 第五个參数是旋转Z角差。第六个參数是起始X角。最后一个參数旋转X角差,
- //顺时钟翻转
CCOrbitCamera* orbitFront = CCOrbitCamera::create(orbitTime, 1, 0, 270, 90, 0, 0); - CCSequence* sequenceFront = CCSequence::createWithTwoActions(CCShow::create(), orbitFront);
- CCTargetedAction* targetFront = CCTargetedAction::create(pokerFront, sequenceFront);
- CCOrbitCamera* orbitBack = CCOrbitCamera::create(orbitTime, 1, 0, 0, 90, 0, 0);
- pokerBack->runAction(CCSequence::create(orbitBack, CCHide::create(), targetFront, CCCallFunc::create(this, callfunc_selector(HelloWorld::actionIsDownFunc)),NULL));
- }else if(pokerFront->isVisible() == true && actionIsDone == true){
- actionIsDone = false;
- //逆时钟翻转
CCOrbitCamera* orbitFront = CCOrbitCamera::create(orbitTime, 1, 0, 270, 90, 180, 0); - CCSequence* sequenceFront = CCSequence::createWithTwoActions(CCShow::create(), orbitFront);
- CCTargetedAction* targetFront = CCTargetedAction::create(pokerBack, sequenceFront);
- CCOrbitCamera* orbitBack = CCOrbitCamera::create(orbitTime, 1, 0, 0, 90, 0, 0);
- pokerFront->runAction(CCSequence::create(orbitBack, CCHide::create(), targetFront, CCCallFunc::create(this, callfunc_selector(HelloWorld::actionIsDownFunc)),NULL));
- }
- }
- void HelloWorld::actionIsDownFunc()
- {
- actionIsDone = true;
- }
- bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
- {
- //翻牌动作
- startOrbitAction();
- return true;
- }
- void HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){}
- void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){}
- void HelloWorld::onEnter()
- {
- CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, false);
- CCLayer::onEnter();
- }
- void HelloWorld::onExit()
- {
- CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
- CCLayer::onExit();
- }
- HelloWorld::~HelloWorld(){}
两张扑克牌资源:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29uZ19odWlfeGlhbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border:none; max-width:100%">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29uZ19odWlfeGlhbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border:none; max-width:100%; font-family:SimSun; color:rgb(51,102,255); font-size:18px">
cocos2dx 利用CCOrbitCamera实现扑克牌翻牌效果的更多相关文章
- Cocos2d-x实现简单的翻牌效果
触发器互联网影响找了很多.有自己的点重写一个复杂的sprite类来实现.简单的操作来对引擎的使用CCOrbitCamera实现,但是,也存在一些问题,后变反了. 我在用的仅仅是一个简单的翻牌效果,点击 ...
- cocos2dx翻牌效果示例
实现类似翻扑克牌的效果 代码如下: OrbitCamera* rotate1; OrbitCamera* rotate2; if(towardRight){//向右翻转 rotate1=OrbitCa ...
- 利用div实现遮罩层效果
利用div实现遮罩层效果就是利用一个全屏.半透明的div遮住页面上其它元素,典型的例子就是百度的登录界面.下面贴出示例代码: <!DOCTYPE html> <html> &l ...
- css3之3D翻牌效果
最近一直在学css3,发现他真的是越来越牛逼.现在的css3已经不在是以前的css了,它能做出的功能效果是我们没法想象的了.它可以实现flash,可以制作一些js能做出来的效果,还可以写出ps做出 ...
- 利用MARQUEE实现正在处理效果
ASP.NET服务器端事件利用MARQUEE实现正在处理效果 前言:ASP.NET同仁们应该都遇到过当触发一个比较耗时的服务器端事件时,页面会处在一个等待的状态(即假死状态),用户体验非常不好,很 ...
- css3 翻牌效果
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...
- HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果
首先感谢w3cfuns的老师~ 今天给大家带来一个CSS3制作的翻牌效果,就是鼠标移到元素上,感觉可以看到元素背后的信息.大家如果制作考验记忆力的连连看.扑克类的游戏神马的,甚至给女朋友写一些话语,放 ...
- 使用JS与CSS3的翻转实现3D翻牌效果
之前我们有讨论过使用CSS3如何实现网页水平翻转的效果,而这次我们介绍的是翻转效果更深一层的应用——3D翻牌效果. 这里我们需要使用flip中轴翻转实现,又因为是3D效果,如果希望呈现一定的3D视角, ...
- jQuery精仿手机上的翻牌效果菜单
代码简介: jQuery精仿手机上的翻牌效果菜单,很平滑的动画翻牌效果,每点击一下菜单,就会翻去一下,貌似很灵敏的动作.注意:如果预览时没看到效果,请刷新一下页面,让jquery载入就行了,在实际使用 ...
随机推荐
- 一条insert语句批量插入多条记录
一条insert语句批量插入多条记录 常见的insert语句,向数据库中,一条语句只能插入一条数据: insert into persons (id_p, lastname , firstName, ...
- PHP输出中文乱码的问题(转)
用echo输出的中文显示成乱码, 其实应该是各种服务器脚本都会遇到这个问题, 根本还是编码问题, 一般来说出于编码兼容考虑大多的页面都将页面字符集定义为utf-8 <meta http-equi ...
- 保障MySQL安全的14个最佳方法
MySQL数据库一贯以高性能.高可性和易用性著称,它已经成为世界上最流行的开源数据库.大量的个人.WEB开发者.大型公司等都在其网站.关键系统.软件包中广泛使用MySQL数据库. 通常, ...
- mvvm框架正式名字确定
经过长时间的选名,今天终于把名字定下来了,ddrjs data drive render,其实框架的核心还是 数据驱动渲染,其实现在市面上的大部分mvvm框架如:angular.vue.avalon ...
- (五)Angularjs - 依赖注入
如何找到API? AngularJS提供了一些功能的封装,但是当你试图通过全局对象angular去 访问这些功能时,却发现与以往遇到的库大不相同. 比如,AngularJS暴露了一个全局对象:angu ...
- 用命令行批处理bat,设置代理服务器、DNS、网关、WINS等
http://hi.baidu.com/83050158/blog/item/50cbd63f9da79ccb7d1e711b.html 将下面代码复制到记事本,另存为NetSet.bat,修改相应i ...
- jquery上传控件个人使用
转了一篇jquery的上传控件使用博文,但是,经过测试貌似不行,自己研究了一下,效果实现.记下,以后使用. 下载“Uploadify”,官方版本为php的,很多文件不需要,删除带.php的文件. &l ...
- image控件读取数据库二进制图片
DataGridShowImage.aspx <%@ Page language="c#" debug="true" Codebehind=" ...
- phpcms v9版本二次开发四步曲
今晚看了一下PHPCMS V9版本,做一个实例抛砖引玉,其实很简单,以下是二次开发的一个实例以旅游模块为例1. 在phpcms\modules目录下建立一个文件夹tour2. 在phpcms\m ...
- 23个phpcms v9模板制作及二次开发常用代码案例
0:调用最新文章,带所在版块 {pc:get sql="SELECT a.title, a.catid, b.catid, b.catname, a.url as turl ,b.url a ...
