Ale*_*x L 0 iphone objective-c cocos2d-iphone
当我改变场景时,此代码会创建一个随机转换.有十一个过渡.因为它们是静态的,我想我不能使用NSClassFromString.我还需要传递场景对象.现在,转换似乎是多余的.有没有办法重写这个以提高效率?
-(void) newScene
{
CCScene *s = [CCScene node];
id child = [sceneCharacter node];
[s addChild:child];
int random = arc4random() % 10;
switch (random)
{
case 1:
[[CCDirector sharedDirector] replaceScene:[CCFadeTransition transitionWithDuration:0.5f scene:s]];
break;
case 2:
[[CCDirector sharedDirector] replaceScene:[CCFadeTRTransition transitionWithDuration:0.5f scene:s]];
break;
case 3:
[[CCDirector sharedDirector] replaceScene:[CCJumpZoomTransition transitionWithDuration:0.5f scene:s]];
break;
case 4:
[[CCDirector sharedDirector] replaceScene:[CCMoveInLTransition transitionWithDuration:0.5f scene:s]];
break;
case 5:
[[CCDirector sharedDirector] replaceScene:[CCOrientedTransitionScene transitionWithDuration:0.5f scene:s]];
break;
case 6:
[[CCDirector sharedDirector] replaceScene:[CCPageTurnTransition transitionWithDuration:0.5f scene:s]];
break;
case 7:
[[CCDirector sharedDirector] replaceScene:[CCRotoZoomTransition transitionWithDuration:0.5f scene:s]];
break;
case 8:
[[CCDirector sharedDirector] replaceScene:[CCShrinkGrowTransition transitionWithDuration:0.5f scene:s]];
break;
case 9:
[[CCDirector sharedDirector] replaceScene:[CCSlideInLTransition transitionWithDuration:0.5f scene:s]];
break;
case 10:
[[CCDirector sharedDirector] replaceScene:[CCSplitColsTransition transitionWithDuration:0.5f scene:s]];
break;
case 0:
[[CCDirector sharedDirector] replaceScene:[CCTurnOffTilesTransition transitionWithDuration:0.5f scene:s]];
break;
default:
[[CCDirector sharedDirector] replaceScene:s];
}
Run Code Online (Sandbox Code Playgroud)
}
您可以将所有CC*Transition对象放入一个数组中,并使用随机数来索引该数组:
transition tt = transitions[random];
[[CCDirector sharedDirector] replaceScheme:[tt transitionWithDuration: 0.5f scene:s]];
Run Code Online (Sandbox Code Playgroud)
另外警告,你的随机数只会取0到9之间的值.如上所述,情况10,默认情况下永远不会发生.