2015-12-09 60 views
0


我在swift中創建了一個遊戲,其中包含一個跳躍上下的英雄。不幸的是,創建英雄的班級沒有出現在屏幕上。我沒有收到任何錯誤消息 - 只是沒有出現。這裏是我的代碼,我想你會發現它是非常簡單的:
無法實現SKSprite類。沒有錯誤信息,只是沒有出現

// 
// MLHero.swift 
// marioRunner 
// 
// Created by nick on 12/7/15. 
// Copyright © 2015 Supreme Leader. All rights reserved. 
// 

import Foundation 
import SpriteKit 

class MLHero: SKSpriteNode { 
    var theVar:String! 
    var body: SKSpriteNode! 
    var arm: SKSpriteNode! 
    var leftFoot: SKSpriteNode! 
    var rightFoot: SKSpriteNode! 
    init() { 
     super.init(texture: nil, color: UIColor.clearColor(), size: CGSizeMake(32, 44)) 
     self.theVar = "whoopwhoop" 
     print("MADE IT") 
     body = SKSpriteNode(color:UIColor.blackColor(), size: CGSizeMake(self.frame.size.width, 40)) 
     body.position = CGPointMake(0, 2) 
     addChild(body) 
     let skinColor = UIColor(red:207.0/255.0, green:193.0/255.0, blue: 168.0/255.0, alpha: 1.0) 
     let face = SKSpriteNode(color: skinColor, size: CGSizeMake(self.frame.size.width, 2)) 
     face.position = CGPointMake(0, 6) 
     body.addChild(face) 
     let eyeColor = UIColor.whiteColor() 
     let leftEye = SKSpriteNode(color: eyeColor, size: CGSizeMake(6,6)) 
     let rightEye = leftEye.copy() as! SKSpriteNode 
     let pupil = SKSpriteNode(color: UIColor.blackColor(), size: CGSizeMake(3,3)) 
     pupil.position = CGPointMake(2, 0) 
     leftEye.addChild(pupil) 
     rightEye.addChild(pupil.copy() as! SKSpriteNode) 
     leftEye.position = CGPointMake(-4, 0) 
     face.addChild(leftEye) 
     rightEye.position = CGPointMake(14, 0) 
     face.addChild(rightEye) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

} 

正如你看到的,代碼似乎運作,並且是非常簡單的。我從熟悉SKSprites的編程惡魔那裏得到了一些幫助,但是他被困住了,爲什麼MLHero不會出現。

// 
// GameScene.swift 
// marioRunner 
// 
// Created by nick on 11/18/15. 
// Copyright (c) 2015 Supreme Leader. All rights reserved. 
// 

import SpriteKit 

class GameScene: SKScene { 

    var movingGround: MLMovingGround! 

    override func didMoveToView(view: SKView) { 
     backgroundColor = UIColor(red: 159.0/255.0, green: 201.0/255.5, blue: 244.0/255.0, alpha: 1.0) 
     movingGround = MLMovingGround(size: CGSizeMake(view.frame.width, 20)) 
     movingGround.position = CGPointMake(0, view.frame.size.height/2) 
     addChild(movingGround) 

     let hero = MLHero() 
     hero.position = CGPointMake(70, movingGround.position.y + movingGround.frame.size.height/2 + hero.frame.size.height/2) 
     print(hero.position) 
    } 

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     movingGround.start() 
    } 

    override func update(currentTime: CFTimeInterval) { 

    } 
} 

回答

2

您並未將hero添加到現場。

GameScene,在didMoveToView末尾添加

self.addChild(hero)