iOS Dev (49) 애플 공식 Sprite Kit 게임 모델

iOS Dev (49) 애플 공식 Sprite Kit 게임 모델
저자: 대 예 형
블 로그:http://prevention.iteye.com
기본 구조
- AppDelegate - ViewController: 기본 적 인 VC. -MyScene: 애니메이션 장면, 처리 동작 등.
AppDelegate 에서 ViewController 를 예화 하고 ViewController 에서 MyScene 을 예화 합 니 다.
AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = [[ViewController alloc] init];   
    [self.window makeKeyAndVisible];
    return YES;
}

ViewController
- (void)loadView
{
    self.view = [[SKView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    SKView * skView = (SKView *)self.view;
    SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;

    [skView presentScene:scene];
}

위 에 이거 알 아 보기 쉬 워.loadView 에서 view 를 초기 화 합 니 다. 이것 은 init 에서 할 수도 없고 view DidLoad 에서 할 수도 없다 는 것 을 기억 해 야 합 니 다.
viewdLoad 에서 먼저 MyScene 을 실례 화하 고 이 MyScene 테이프 scaleMode 를 SKscene Scale Mode AspectFill 로 설정 합 니 다.마지막 으로 view 에서 이 장면 을 소개 합 니 다.
이상 의 절 차 는 모두 일반적인 방법 이다.
MyScene
-(id)initWithSize:(CGSize)size {    
    if (self = [super initWithSize:size]) {
        self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0];

        SKLabelNode *myLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];

        myLabel.text = @"Hello, World!";
        myLabel.fontSize = 30;
        myLabel.position = CGPointMake(CGRectGetMidX(self.frame),
                                       CGRectGetMidY(self.frame));

        [self addChild:myLabel];
    }
    return self;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */

    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInNode:self];

        SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];

        sprite.position = location;

        SKAction *action = [SKAction rotateByAngle:M_PI duration:1];

        [sprite runAction:[SKAction repeatActionForever:action]];

        [self addChild:sprite];

        NSLog(@"for loop");
    }

    NSLog(@"touchesBegan");
}

touches Began 방법 을 실현 합 니 다. 이 방법 은 MyScene 이 UIResponder 에서 계승 한 것 으로 다음 과 같이 정의 합 니 다.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

이 상속 관 계 는 이렇게 가진다.
MyScene -> SKScene -> SKEffectNode -> SKNode -> UIResponder

나중에 이 touches Began 얘 기 하 자.
먼저 touch 의 점 location 을 가 져 옵 니 다
sprite 를 만 듭 니 다. sprite Node WithImageNamed 라 는 API 를 사용 합 니 다
이 sprite 테이프 위 치 를 설정 합 니 다
SKaction 을 만 들 고 sprite 로 하여 금 이 action 을 반복 하 게 합 니 다
마지막 으로 이 sprite 를 scene 에 추가 하 세 요
전재 할 때 대 예 형 에서 온 블 로 그 를 밝 혀 주세요.http://prevention.iteye.com

좋은 웹페이지 즐겨찾기