タップすると、上下に数字がパカッとわれて、次の数字が出てくるような 3 x 3 の棚をiPhoneアプリとして描いてみます。(SpriteKitで使えるSKTransitionのdoorsOpenVerticalWithDurationというのを使ってみました。)
動作イメージ
XcodeからiOS7 iPhone Simulatorで動かすとこんな感じになります。
サンプルコード
#import “ViewController.h”
#import <SpriteKit/SpriteKit.h>
@interface BoxScene : SKScene
@property BOOL contentCreated;
@property (strong, nonatomic) NSString *number;
@end
@implementation BoxScene
– (void)didMoveToView:(SKView *)view
{
if (!self.contentCreated) {
[self createSceneContents];
self.contentCreated = YES;
}
}
– (void)createSceneContents
{
self.backgroundColor = [SKColor orangeColor];
self.scaleMode = SKSceneScaleModeAspectFit;
[self addChild:[self newBox]];
}
– (SKNode*)newBox
{
SKLabelNode *box = [SKLabelNode labelNodeWithFontNamed:@”GillSans”];
box.text = self.number;
box.fontSize = 80;
box.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame) – 30);
box.name = @”boxNode”;
return box;
}
– (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
SKNode *helloNode = [self childNodeWithName:@”boxNode”];
if (helloNode) {
SKTransition *doors = [SKTransition doorsOpenVerticalWithDuration:1.0];
BoxScene *openBox = [[BoxScene alloc] initWithSize:self.size];
self.number = [NSString stringWithFormat:@”%d”, [self.number intValue] – 1];
openBox.number = self.number;
[self.view presentScene:openBox transition:doors];
}
}
@end
@interface ViewController ()
@end
@implementation ViewController
– (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor purpleColor];
for (int i = 0; i<9; i++) {
float x = (i % 3) * 100 + 10;
float y = (i / 3) * 100 + 100;
SKView *spriteView = [[SKView alloc] initWithFrame:CGRectMake(x, y, 90, 90)];
[self.view addSubview:spriteView];
BoxScene *box = [[BoxScene alloc] initWithSize:CGSizeMake(90, 90)];
box.number = @”12″;
[spriteView presentScene:box];
}
}
– (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end