SKLabelNodeインスタンスをアニメーションさせてみます。
前回までで画面の中央に"Hello, World!"と表示されていましたが、ただジッと表示しているだけでした。今回はこの文字列を動かしてみましょう。
まず、この文字列のNodeを後で検索して見つけれるようにnameプロパティを設定しておきます。
helloNode.nameに@"helloNode"を設定します。
HelloScene.m
- (SKLabelNode *)newHelloNode
{
SKLabelNode *helloNode = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
helloNode.name = @"helloNode";
helloNode.text = @"Hello, World!";
helloNode.fontSize = 42;
helloNode.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
return helloNode;
}
touchesBegan:withEvent:メソッドを実装します。
このメソッドはシーンにタッチしたときに呼ばれます。
HelloScene.m
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
SKNode *helloNode = [self childNodeWithName:@"helloNode"];
if (helloNode != nil) {
helloNode.name = nil;
SKAction *moveUp = [SKAction moveByX: 0 y: 100.0 duration: 0.5];
SKAction *zoom = [SKAction scaleTo: 2.0 duration: 0.25];
SKAction *pause = [SKAction waitForDuration: 0.5];
SKAction *fadeAway = [SKAction fadeOutWithDuration: 0.25];
SKAction *remove = [SKAction removeFromParent];
SKAction *moveSequence = [SKAction sequence:@[moveUp, zoom, pause, fadeAway, remove]];
[helloNode runAction: moveSequence];
}
}
実行すると、移動->ズーム->停止->フェードアウェイ->削除の順番にアニメーションします。
今回はここまで。