Cocos2d-iPhone V3 (2) 场景转换
Cocos2d-iPhone V3 (2) 场景转换
- 博客:http://blog.csdn.net/prevention
- 作者:大锐哥
-
1. 准备工作
创建一个场景会吧?
#import "cocos2d.h"
#import "cocos2d-ui.h"
@interface MainScene : CCScene
+ (MainScene *)scene;
- (id)init;
@end
主要的方法都得实现,scene、init、onEnter、onExit和touchBegan。不会的话先看看 Cocos2d-iPhone
V3 (1) 基本程序框架以及经常使用动作介绍 这篇。
好了,如今如果你已经创建了两个自己定义场景类MainScene和HomeScene。
2. 转场!
从MainScene转换到HomeScene。在MainScene的某处代码中调用:
CCTransition *t = [CCTransition transitionPushWithDirection:CCTransitionDirectionRight
duration:1.0f]
[CCDirector sharedDirector] replaceScene:[HomeScene scene] withTransition:t];
创建一个CCTransition。然后让导演来 hold 住全场,用CCTransition来转场到HomeScene。使用的函数是:
- (void)replaceScene:(CCScene *)scene withTransition:(CCTransition *)transition;
你要有一种电影导演的感觉。这里提一下转场四要素:
- 旧场景
- 新场景
- 转场方式:可能涉及转场方向等參数
- 转场时间
3. 经常使用转场方式
上面用到的是push,详细是新场景从右側向左移入(推动旧场景也向左移)。六种转场方法例如以下:
// 注意:以下的写法是不正式的,仅仅是为了简短明了
// cross fade
transitionCrossFadeWithDuration:(NSTimeInterval)
// fade with color
transitionFadeWithColor:(CCColor*) duration:(NSTimeInterval)
// fade
transitionFadeWithDuration:(NSTimeInterval)
// move in
transitionMoveInWithDirection:(CCTransitionDirection) duration:(NSTimeInterval)
// push
transitionPushWithDirection:(CCTransitionDirection) duration:(NSTimeInterval)
// reveal
transitionRevealWithDirection:(CCTransitionDirection) duration:(NSTimeInterval)
- cross fade 转场就是旧场景 alpha 值从 1 变为 0,新场景的 alpha 值从 0 变为 1,两个 cross 在一起。
- fade with color 转场就是在旧场景与新场景之间加一个颜色场景,先从旧场景 cross fade 到这个颜色场景,再从颜色场景 cross fade 到新场景。
- fade 就是 fade with color 的一个特殊情况,即颜色场景为黑色的情况。
- move in 转场是指新场景 move in。即新场景像一个盖子一样挪过来盖在旧场景上面。
- push 转场是新场景把旧场景推走,两个场景平行移动。
- reveal 转场就是旧场景盖在新场景以下,然后像揭盖子一样把旧的揭掉。新的就露出来了。
与 move in 相反,一个是新场景盖过来。一个是老场景揭出去。
事实上你 coding 一下试试就知道了,把 duration 设置长一点来观察。
-
转载请注明来自:http://blog.csdn.net/prevention
Cocos2d-iPhone V3 (2) 场景转换的更多相关文章
- cocos2d 场景转换的方法执行顺序
转自:http://shanbei.info/the-cocos2d-scene-conversion-method-execution-order.html 如果你希望在场景转换的过程中使用过渡效果 ...
- 【Unity3D】场景转换与退出
1.场景转换 : 老版本的场景切换用的是Application.LoadLevel([场景名字或者在File->Build settings里面的场景代号]); 新版本的场景转换用到了Scene ...
- unity 3D游戏场景转换
//////////////////2015/07/07//////// /////////////////by xbw/////////////// ///////////////环境 unity ...
- (10)场景转换(Transitions)
Cocos2d-x最爽的一个特性之一就是提供了在两个不同场景之间直接转换的能力.例如:淡入淡出,放大缩小,旋转,跳动等.从技术上来说,一个场景转换就是在展示并控制一个新场景之前执行一个转换效果. 场景 ...
- iOS中的场景转换机制的浅显分析
目前Apple推荐的场景转换的方法有以下几个: 一般的跳转方法: presentViewController Discussion In a horizontally compact environm ...
- Cocos2D v2.0至v3.x简洁转换指南(三)
Cocos2D 3.3中的注意事项 如果你在使用Cocos2D 3.3+(是SpriteBuilder 1.3+的一部分)你将不得不替分别的换所有存在的UITouch和UITouchEvent为CCT ...
- Cocos2D v2.0至v3.x简洁转换指南(一)
在该指南开头,我们假设你应经很熟悉Cocos2d 2.x版本. 我们将指出新版本重要的改变,并且给出一些你已经从Cocos2d 2.x版本中熟知的实现. CCNodes,CCScenes和CCLaye ...
- Cocos2D v2.0至v3.x简洁转换指南(五)
资源管理 如果你没有计划用SpriteBuilder,你可以继续使用后缀去管理各种不同解决方案中的图像. 首先,你需要在AppDelegate.m中将[CCBReader configrueCCFil ...
- Cocos2D v2.0至v3.x简洁转换指南(四)
实现通用的update方法 在Cocos2d 2.x你需要2个步骤去实现在每帧调用update方法: // 1) schedule update [self scheduleUpdate]; ... ...
随机推荐
- Linux bug 14258279: scheduling clock overflows in 208 days
早上同事反映数据库不能用.无法正常登录主机.多次尝试后终于登上主机,检查系统日志发现下述错误: BUG: soft lockup - CPU#5 stuck for 17163091988s! 貌似是 ...
- 退货行RMA编号改为必输选项
应用 Oracle Inventory 层 Level Function 函数名 Funcgtion Name RCV_RCVTXERE 表单名 Form Name RCVTXERE 说明 Descr ...
- Unix/Linux环境C编程入门教程(13) 开发环境搭建VMware软件安装
VMware(中文名威睿",纽约证券交易所"代码:VMW) 虚拟机软件,是全球桌面到数据中心虚拟化解决方案的领导厂商.全球不同规模的客户依靠VMware来降低成本和运营费用.确保业 ...
- [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(二)
这篇文章的理解,需要一些专业知识了. 我们可以创建模拟自己的外设吗? 我们已经知道什么是qemu了,我们可以通过qmeu的提供的外设,DIY一个计算机了. 但是我们可能还不满足,我们可以自己制造一个外 ...
- 新iPhone开售现场:土豪金火了
今日苹果在全球范围内开始正式发售iPhone 5s与5c手机.在中国王府井苹果零售店,首位购机者李先生在今早4点50分便在此等候. 现场未发现黄牛 本次苹果在中国大陆的自有零售店渠道首批iPhone ...
- PHP 面向对象:设计模式之单例模式
单例模式要解决的问题就是“如何让这个类只有一个实例”. 我们的web应用中,大量使用了数据库连接,如果反复建立与数据库的连接必然消耗更多的系统资源. 我们如何解决这个问题,建立唯一的数据库连接是必要的 ...
- HDU 3037 Saving Beans(Lucas定理的直接应用)
解题思路: 直接求C(n+m , m) % p , 由于n , m ,p都非常大,所以要用Lucas定理来解决大组合数取模的问题. #include <string.h> #include ...
- struts2 全局格式化,格式化时间,金钱,数字
//在前台页面去控制时间,数字,小数,金钱,是极其不明智的选择,除非你是写了良好的 js api 像freemarker , struts 都有良好的标签,我们应该好好利用,才发现的,给大家分享一下 ...
- C++ 清空消息队列
在button等被禁用后,可能须要它在禁用期间不去响应不论什么消息. 能够使用以下的语句片段: MSG msg; //消耗掉消息队列中的全部消息 while(::PeekMessage(&ms ...
- JavaScript引用类型之Array数组的栈方法与队列方法
一.栈方法 ECMAScript数组也提供了一种让数组的行为类似与其他数据结构的方法.具体的来说,数组可以变现的向栈一样,栈就是一种可以限制插入和删除向的数据结构.栈是一种LIFO(Last In F ...