2016-09-17 7 views
0

私のGameScene.sksには、「ボール」を表すSKSpriteNodeがあります。.sksファイルを使用してSKSpriteNodeのサブクラスを初期化します。Xcode 8

私はボールとしてSKSpriteNodeをサブクラス化する必要があります。私のシーンで

class Ball:SKSpriteNode { 
    //custom init 
} 

、私は.sksでSKSpriteNodeを使用してのinit私のボールをしたいと思います。

私はXcodeの8を使用していたように、私は私のSKSpriteNodeでカスタムクラスを使用しようとしました:

enter image description here

self.ball = self.childNode(withName: "ball") as! Ball 

しかし、私のアプリがクラッシュし、このラインでは... また、私はよ私のサブクラスのカスタムイニシャライザを作成する方法がわからない。私はここでの問題はあなたがシーンエディタで追加スプライトに名前を割り当てていないことだと思います

class Ball:SKNode { 
    var sprite:SKSpriteNode! 
} 

let ball = Ball() 
ball.sprite = self.childNode(withName: "ball") as? SKSpriteNode 
+0

を試してみてください? –

+0

@appzYourLife単なる間違い:) – cmii

+0

これは、AppleがSpriteKit Scene Editorからコードに何かを取得してそこから再生する方法を説明していない素晴らしい例です。シーンエディタとコードは2つの異なる世界に存在し、それらの間の橋は撚り糸で作られており、理解できるものは説明できませんでした。 – Confused

答えて

0

FYI私のようなものを避けることを好むだろう。

は、名前

を探していることを代わりにタイプを探して、あなたのスプライトを取得することができますが、 `Puck`に` Ball`をキャストしているなぜ、この

self.ball = self.children.flatMap { $0 as? Ball }.first! 
+0

My Ballの名前は、シーンエディタのSKSpriteNodeのプロパティで「ball」と命名されています。 – cmii

関連する問題