その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

cocos2d のトランジションエフェクトのラッパークラスを公開しました

cocos2dのシーン間のトランジションエフェクトって非常に抱負でありがたいんですが、いつも書き方がわからなくなたりクラス名がわからなかったりして、サンプルプロジェクト開いて探して・・・というのが面倒でした。


たとえば

[[CCDirector sharedDirector] replaceScene:[CCFadeBLTransition transitionWithDuration:2.0 scene:scene]];

このCCFadeBLTransitionっていうクラスが思い出せなかったり(コード補完ではCCFadeInなどトランジションクラス以外のも出てくるのでクラス名を知らないと判別不能)、

[[CCDirector sharedDirector] replaceScene:
 [CCFlipYTransition transitionWithDuration:1.0 scene:scene orientation:kOrientationUpOver]];

このorientationっていう引数が入るときもあってややこしかったり。
サンプルアプリみながらトランジションを選ぶ際に、どれがどのクラスに対応してるかわかりにくい


というわけで CCTransitionHelper ラッパークラスを書いてみました。


ソースはこちらに置いてあります。

概要

こんな感じでトランジションを指定できます。

[CCTransitionHelper replaceScene:scene transitionType:TransitionTypeSplitCols duration:0.7];


cocos2dに付随しているサンプル"TransitionTest"に出てくる遷移エフェクト名が全て定義されているので、TransitionTypeと打ち込めばあとはコード補完で種類を選択することができます。

#define TransitionTypeJumpZoom          @"CCTransitionJumpZoom"
#define TransitionTypeCrossFade         @"CCTransitionCrossFade"
#define TransitionTypeRadialCCW         @"CCTransitionRadialCCW"
#define TransitionTypeRadialCW          @"CCTransitionRadialCW"
#define TransitionTypePageForward       @"TransitionPageForward"
#define TransitionTypePageBackward      @"TransitionPageBackward"
#define TransitionTypeFadeTR            @"CCTransitionFadeTR"
#define TransitionTypeFadeBL            @"CCTransitionFadeBL"
#define TransitionTypeFadeUp            @"CCTransitionFadeUp"
#define TransitionTypeFadeDown          @"CCTransitionFadeDown"
#define TransitionTypeTurnOffTiles      @"CCTransitionTurnOffTiles"
#define TransitionTypeSplitRows         @"CCTransitionSplitRows"
#define TransitionTypeSplitCols         @"CCTransitionSplitCols"
#define TransitionTypeFade              @"CCTransitionFade"
#define TransitionTypeFadeWhite         @"FadeWhiteTransition"
#define TransitionTypeFlipXLeftOver     @"FlipXLeftOver"
#define TransitionTypeFlipXRightOver    @"FlipXRightOver"
#define TransitionTypeFlipYUpOver       @"FlipYUpOver"
#define TransitionTypeFlipYDownOver     @"FlipYDownOver"
#define TransitionTypeFlipAngularLeftOver @"FlipAngularLeftOver"
#define TransitionTypeFlipAngularRightOver @"FlipAngularRightOver"
#define TransitionTypeZoomFlipXLeftOver @"ZoomFlipXLeftOver"
#define TransitionTypeZoomFlipXRightOver @"ZoomFlipXRightOver"
#define TransitionTypeZoomFlipYUpOver   @"ZoomFlipYUpOver"
#define TransitionTypeZoomFlipYDownOver @"ZoomFlipYDownOver"
#define TransitionTypeZoomFlipAngularLeftOver @"ZoomFlipAngularLeftOver"
#define TransitionTypeZoomFlipAngularRightOver @"ZoomFlipAngularRightOver"
#define TransitionTypeZoomShrinkGrow    @"CCTransitionShrinkGrow"
#define TransitionTypeRotoZoom          @"CCTransitionRotoZoom"
#define TransitionTypeMoveInL           @"CCTransitionMoveInL"
#define TransitionTypeMoveInR           @"CCTransitionMoveInR"
#define TransitionTypeMoveInT           @"CCTransitionMoveInT"
#define TransitionTypeMoveInB           @"CCTransitionMoveInB"
#define TransitionTypeSlideInL          @"CCTransitionSlideInL"
#define TransitionTypeSlideInR          @"CCTransitionSlideInR"
#define TransitionTypeSlideInT          @"CCTransitionSlideInT"
#define TransitionTypeSlideInB          @"CCTransitionSlideInB"

使用手順

  1. https://github.com/shu223/CCTransitionHelper からダウンロード
  2. CCTransitionHelper.h, CCTransitionHelper.m をプロジェクトに追加
  3. ヘッダで CCTransitionHelper.h をインポート

以上です。


遷移のクラスメソッド名は CCDirector のシーン遷移メソッド(runWithScene, pushScene, replaceScene)に準じています。

[CCTransitionHelper runWithScene:scene transitionType:TransitionTypeSplitCols duration:0.7];
[CCTransitionHelper pushScene:scene transitionType:TransitionTypeSplitCols duration:0.7];
[CCTransitionHelper replaceScene:scene transitionType:TransitionTypeSplitCols duration:0.7];

duration引数に0以下の数値を入れるとデフォルト値が適用されます。