iPhoneアプリ開発講座を受講する その9
Scene移動時に値を引きわたす
方法はいくつかあると思うが、一番簡単そうな方法はこれかな。
Scene経由のバケツリレー方式。
Scene移動先の.h
sceneの引数でバケツリレー。
@interface SecondLayer : CCLayer { CCLabelTTF *label_; } +(CCScene *) scene:(NSString*)str; -(void)setLabelString:(NSString*)str; @end
Scene移動後の.m
バケツリレーして、ラベルにぺたぺた。
+(CCScene *) scene:(NSString*)str { CCScene *scene = [CCScene node]; SecondLayer *layer = [SecondLayer node]; [layer setLabelString:str]; [scene addChild: layer]; return scene; } -(void)setLabelString:(NSString*)str { [label_ setString:str]; }
Scene移動元の.m
移動先のHogeLayerにHogeって文字を渡したる。
CCTransitionFadeは移動する際に少しカッコつけてみた。
-(void)doHoge { CCScene *scnen = [HogeLayer scene:@"hoge"]; CCTransitionFade *fade = [CCTransitionFade transitionWithDuration:1 scene:scnen]; [[CCDirector sharedDirector] replaceScene:fade]; }
フォント
AppDelegate.m
- (void) applicationDidFinishLaunching:(UIApplication*)application { ...省略... //font [[FontManager sharedManager] loadFont:@"font/Sansation_Regular.ttf"]; // Run the intro Scene [[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]]; }
XXXXLayer.m
-(void) init { CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello World" fontName:@"font/Sansation_Regular" fontSize:64]; }
サウンド
AppDelegate.m
- (void) applicationDidFinishLaunching:(UIApplication*)application { ...省略... //sound preload [[SimpleAudioEngine sharedEngine] preloadBackgroundMusic:@"sound/bgm.wav"]; [[SimpleAudioEngine sharedEngine] preloadEffect:@"sound/se.wav"]; // Run the intro Scene [[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]]; }
XXXXLayer.m
-(void) init { //サウンドを鳴らす [[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"sound/bgm.wav" loop:YES]; } -(void)doNext { [[SimpleAudioEngine sharedEngine] playEffect:@"sound/se.wav"]; }