ios - 无法实现 SKSprite 类。没有错误信息,只是不显示

标签 ios swift skspritenode


我正在快速创建一个游戏,其中包含一个上下跳跃的英雄。不幸的是,创建英雄的类没有出现在屏幕上。我没有收到任何错误消息 - 只是没有出现。这是我的代码,我想你会发现它相当简单:

//
//  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) {

    }
}

最佳答案

您没有将 hero 添加到场景中。

GameScene中,在didMoveToView的末尾添加

self.addChild(hero)

关于ios - 无法实现 SKSprite 类。没有错误信息,只是不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34184138/

相关文章:

ios - 将文本字段添加到 SKScene

ios - 无法点击 SKSpriteNode - 未检测到触摸 ios

ios - 如何在swift中找到最接近场景底部的 Sprite 节点

ios - 为什么我的 UICollectionView 在单击单元格时会向上滚动?

ios - 英雄过渡无效

ios - 无法使用并找到 setTexture :resize SpriteKit

ios - 在没有任何 Storyboard引用的情况下在 Controller 之间传递数据

ios - 如何手动添加在文本字段内单击时消失的 UITextField 占位符文本?

xcode - 我想使用 '1.1.0' 的版本 `Alamofire-SwiftyJSON`

xcode - 核心数据产生分析器警告