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

主要的方法都得实现,sceneinitonEnteronExittouchBegan。不会的话先看看 Cocos2d-iPhone
V3 (1) 基本程序框架以及经常使用动作介绍
 这篇。

好了,如今如果你已经创建了两个自己定义场景类MainSceneHomeScene

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;

你要有一种电影导演的感觉。这里提一下转场四要素:

  1. 旧场景
  2. 新场景
  3. 转场方式:可能涉及转场方向等參数
  4. 转场时间

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) 场景转换的更多相关文章

  1. cocos2d 场景转换的方法执行顺序

    转自:http://shanbei.info/the-cocos2d-scene-conversion-method-execution-order.html 如果你希望在场景转换的过程中使用过渡效果 ...

  2. 【Unity3D】场景转换与退出

    1.场景转换 : 老版本的场景切换用的是Application.LoadLevel([场景名字或者在File->Build settings里面的场景代号]); 新版本的场景转换用到了Scene ...

  3. unity 3D游戏场景转换

    //////////////////2015/07/07//////// /////////////////by xbw/////////////// ///////////////环境 unity ...

  4. (10)场景转换(Transitions)

    Cocos2d-x最爽的一个特性之一就是提供了在两个不同场景之间直接转换的能力.例如:淡入淡出,放大缩小,旋转,跳动等.从技术上来说,一个场景转换就是在展示并控制一个新场景之前执行一个转换效果. 场景 ...

  5. iOS中的场景转换机制的浅显分析

    目前Apple推荐的场景转换的方法有以下几个: 一般的跳转方法: presentViewController Discussion In a horizontally compact environm ...

  6. Cocos2D v2.0至v3.x简洁转换指南(三)

    Cocos2D 3.3中的注意事项 如果你在使用Cocos2D 3.3+(是SpriteBuilder 1.3+的一部分)你将不得不替分别的换所有存在的UITouch和UITouchEvent为CCT ...

  7. Cocos2D v2.0至v3.x简洁转换指南(一)

    在该指南开头,我们假设你应经很熟悉Cocos2d 2.x版本. 我们将指出新版本重要的改变,并且给出一些你已经从Cocos2d 2.x版本中熟知的实现. CCNodes,CCScenes和CCLaye ...

  8. Cocos2D v2.0至v3.x简洁转换指南(五)

    资源管理 如果你没有计划用SpriteBuilder,你可以继续使用后缀去管理各种不同解决方案中的图像. 首先,你需要在AppDelegate.m中将[CCBReader configrueCCFil ...

  9. Cocos2D v2.0至v3.x简洁转换指南(四)

    实现通用的update方法 在Cocos2d 2.x你需要2个步骤去实现在每帧调用update方法: // 1) schedule update [self scheduleUpdate]; ... ...

随机推荐

  1. 《转》读discuzx3.1 数据库层笔记

    最近开始在看discuzx3.1的代码,看到数据库层的实现,discuzx的数据库层能够支撑数据库分库,分布式部署,主要水平分表,也可以很方便的支持其他数据库.性能上,可以做读写分离,支持数据缓存.可 ...

  2. C#实现微信开发

    C#实现微信开发前奏 不想废话,直接写了!因为是留给自己做随笔的,所以大神们看到别喷…… 1.必须有微信公众账号 2.你也可以申请测试微信号,链接给你   http://mp.weixin.qq.co ...

  3. 提醒录入BOM更改原因

    应用 Oracle Bill Of   Materiel 层 Level Function 函数名 Funcgtion Name BOM_BOMFDBOM 表单名 Form Name BOMFDBOM ...

  4. erlang supervisor说明

    Supervisor Behaviour是一个用来实现一个supervisor进程来监控其他子进程的模块 子进程可以是另一个supervisor,也可以是一个worker进程. worker进程一般使 ...

  5. cad移动图案

    1.键盘按快捷键M,鼠标变成小方块,选中图案,右击,左击拖动图像 2.选中图像,键盘按m,拖动图像 3.选中图像,右击,图像移动

  6. [问题解决] locale::facet::_S_create_c_locale name not valid

    错误: exception in initAndListen: 14043 clear tmp files caught exception exception: locale::facet::_S_ ...

  7. silverlight datagrid绑定匿名类

    原文 http://www.cnblogs.com/luweis/archive/2011/10/21/2220587.html 刚开始遇到的一个问题是这样的,我有一个datagrid,根据不同的条件 ...

  8. java把函数作为参数传递

    public class Tool { public void a()// /方法a { System.out.print("tool.a()..."); } public voi ...

  9. Day3_字符串操作与正则表达式

    本节课的主要内容有:字符串的格式化.连接与分割.比较.匹配和替换.使用正则表达式 字符串的格式化: 去除空格:trim() 使用html格式化:nl2br()  替换‘\n’为‘<br /> ...

  10. 在iOS当中发送电子邮件和短信

    iOS实现发送电子邮件的方法很简单,首先导入MessageUI.framework框架,然后代码如下: #import "RPViewController.h" //添加邮件头文件 ...