iPhone試すSKlabelNode

SpriteKitのメモ。AppleのサンプルにSKLabelNodeを使ったものがあったので参考にして「ラベルを動かす」、「ラベルを拡大」、「ラベルをフェードアウト」という感じでiPhoneアプリを書いてみる。

(※ StoryboardでViewのクラスをSKViewに変更しています)

動作イメージ
XcodeからiOS7 iPhone Simulatorで動かすとこんな感じになります。

サンプルコード

#import “ViewController.h”

#import <SpriteKit/SpriteKit.h>

@interface MyScene : SKScene

@property BOOL contentCreated;

@end

@implementation MyScene

– (void)didMoveToView:(SKView *)view

{

    if (!self.contentCreated) {

        [self createContents];

        self.contentCreated = YES;

    }

}

– (void)createContents

{

    self.backgroundColor = [SKColor blueColor];

    self.scaleMode = SKSceneScaleModeAspectFit;

    [self addChild:[self newMoveNode]];

    [self addChild:[self newZoomNode]];

    [self addChild:[self newFadeNode]];

}

– (SKNode*)newMoveNode

{

    SKLabelNode *node = [SKLabelNode labelNodeWithFontNamed:@”Chalkduster”];

    node.text = @”Move Node”;

    node.fontSize = 20;

    node.position = CGPointMake(100, 400);

    node.name = @”moveNode”;

    return node;

}

– (SKNode*)newZoomNode

{

    SKLabelNode *node = [SKLabelNode labelNodeWithFontNamed:@”Chalkduster”];

    node.text = @”Zoom Node”;

    node.fontSize = 12;

    node.position = CGPointMake(200, 300);

    node.name = @”zoomNode”;

    return node;

}

– (SKNode*)newFadeNode

{

    SKLabelNode *node = [SKLabelNode labelNodeWithFontNamed:@”Chalkduster”];

    node.text = @”Fade Node”;

    node.fontSize = 20;

    node.position = CGPointMake(150, 200);

    node.name = @”fadeNode”;

    return node;

}

– (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    SKAction *action;

    for (SKNode *node in self.children) {

        if ([node.name isEqual:@”moveNode”]) {

            action = [SKAction moveByX:0 y:100.0 duration:4.0];

        } else if ([node.name isEqual:@”zoomNode”]) {

            action = [SKAction scaleTo:2.0 duration:4.0];

        } else if ([node.name isEqual:@”fadeNode”]) {

            action = [SKAction fadeOutWithDuration:4.0];

        }

        

        node.name = nil;

        SKAction *pause = [SKAction waitForDuration:0.5];

        SKAction *remove = [SKAction removeFromParent];

        SKAction *moveSequence = [SKAction sequence:@[action, pause, remove]];

        [node runAction:moveSequence];

    }

}

@end

@interface ViewController ()

@end

@implementation ViewController

– (void)viewDidLoad

{

    [super viewDidLoad];

    

    SKView *spriteView = (SKView*)self.view;

    spriteView.showsDrawCount = YES;

    spriteView.showsNodeCount = YES;

    spriteView.showsFPS = YES;

}

– (void)viewWillAppear:(BOOL)animated

{

    MyScene *myScene = [[MyScene alloc] initWithSize:CGSizeMake(320, 568)];

    SKView *spriteView = (SKView*)self.view;

    [spriteView presentScene:myScene];

}

– (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

@end