2016-07-27 20 views
1

smallScreenというSKShapeNodeと、screenLabelという名前のSKLabelNodeを作成しました。SKLabelNodeが表示されない[SpriteKit]

後でsmallScreenにscreenLabelを表示しようとしました。しかし、私はコードを実行したとき、それは動作しませんでした。私はselfとしてchildとしてscreenLabelを追加しようとしましたが、それはテキストが表示できるように見えました。 smallScreenに子ノードとしてscreenLabelを追加すると、それは表示されません。助けてください、多くのおかげです。

self.smallScreen = (self.childNodeWithName("screen") as? SKShapeNode)! 
    self.smallScreen.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 2/3) 

    screenLabel.text = "Screen" 
    screenLabel.fontSize = 30 
    screenLabel.fontColor = UIColor.redColor() 
    screenLabel.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 2/3) 
    screenLabel.hidden = false 
    self.smallScreen.addChild(screenLabel) 
+0

問題が解決した場合は、解決策としてフラグを立ててください。ありがとうございます。 –

答えて

0

デフォルトでは、シーンの原点はビューの左下隅に配置されます。デフォルト値はCGPointZeroであり、変更することはできません。 (source)。

アンカーポイントのデフォルト値は(0.5,0.5)で、フレームの中心(source)に対応します。スプライトの(SKSpriteNode)アンカーポイントのデフォルト値は(0.5,0.5)です。

SKShapeNodeにはアンカーポイントがありません。

LearnCocos2Dは、この問題に答え:あなたは、画像を使用する場合

あなたは、そのノードの位置にそれを配置する必要があるかもしれません。 他の方法はありませんが、 イメージ自体は変更できません(とにかく簡単ではないため)anchorPointを使用します。

シェイプを作成するときは、 の配置をCGPathで完全に制御できます。単純にパスを変換して、 ノードの位置に対するシェイプの配置を変更することができます。

これは私の解釈であり、事実ではありません。

だから、に何が起こったのですか?

私はあなたがあなたの形状を初期化しているのか分からない、私はちょうど例を作る:

/* Create a Shape Node representing a rect centered at the Node's origin. */ 
    @available(iOS 8.0, *) 
    public convenience init(rectOfSize size: CGSize) 

だから我々はこのような形状を作成します。

self.smallScreen = SKShapeNode.init(rectOfSize: CGSizeMake(200,200)) 

初めて、あなたの場所あなたのSKShapeNodeをX座標の画面のX中央に、Y = self.frame.size.height * 2/3に設定します。実際にはsmallScreenが表示されます。

ラベルについて言えば、smallScreenに追加しているので、screenLabelは親のアライメントを尊重する必要があります。

screenLabel.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 2/3) 

へ:

から

:あなたはこの変更することによって、あなたのラベルを簡単に見ることができます実際には

screenLabel.position = CGPointZero 

とあなたのラベルがに従ってsmallScreenの中心部に位置しています彼の親の整列。

+0

'デフォルトでスプライトキットでは、シーンの原点はビューの左下隅に配置されます。デフォルト値はCGPointZeroで、変更することはできません。 (ソース)。 "あなたがこれによって何を意味するか分かりませんか?シーンのアンカーポイントを変更して、中心を(0,0)にすることができます。 – Knight0fDragon

+1

ああ、デフォルト位置が0で、変更できないと言っています。シーンにはポジションがないはずがないので意味があります。 – Knight0fDragon

+1

ありがとう! smallScreenの中心の座標は(0,0)であることが判明しました。selfの代わりにsmallScreenにscreenLabelを追加しているので、自分のコーディネートシステムとは異なると思います。コードは今私のために働く。わーい! –

関連する問題