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

基本的方法都得实现,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

发布了153 篇原创文章 · 获赞 3 · 访问量 48万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章