2017-02-22 11 views
0

私のゲームのメニューを作成しようとしていますが、私のUiボタンがシーンに追加されていないので、ここで間違っているのを誰でも見ることができますか?私は問題が明らかであることを知っていて、私はそれを忘れてしまった。 AM私はシーンに間違って追加しますか?それとも、私はあなたがSKViewUIKitUIButton Sまたは任意のビューを使用してはならないことを示唆している私はSkSceneに追加していないUiボタン

import Foundation 
import SpriteKit 

var nextLevelButton = UIButton() 

var previousLevelButton = UIButton() 

var easyText = SKSpriteNode(imageNamed: "RzLsEasyText.png") 
var easyButtonActive = true 
var easyButton = UIButton() 

var mediumText = SKSpriteNode(imageNamed: "RzLsMediumText.png") 
var mediumButtonActive = false 
var mediumButton = UIButton() 

var hardText = SKSpriteNode(imageNamed: "RzLsHardText.png") 
var hardButtonActive = false 
var hardButton = UIButton() 

var nightmareText = SKSpriteNode(imageNamed: "RzLsNightmareText.png") 
var nightmareButtonActive = false 
var nightmareButton = UIButton() 

class LevelSelect: SKScene { 

override func didMoveToView(view: SKView) { 

    self.scene?.size = CGSize(width: 1136, height: 640) 

    easyText.position = CGPointMake(980.865, 394) 
    easyText.zPosition = 6 
    easyButton = UIButton(frame: CGRectMake(974, 240, 100, 64)) 
    easyButton.addTarget(self, action: "EasyButtonActive", 
    forControlEvents: UIControlEvents.TouchUpInside) 

    mediumText.position = CGPointMake(985.603, 338) 
    mediumText.zPosition = 5 
    mediumButton = UIButton(frame: CGRectMake(974, 240, 178, 64)) 
    mediumButton.addTarget(self, action: "MediumButtonActive", 
    forControlEvents: UIControlEvents.TouchUpInside) 

    hardText.position = CGPointMake(981.833, 292) 
    hardText.zPosition = 5 
    hardButton = UIButton(frame: CGRectMake(974, 240, 105, 56)) 
    hardButton.addTarget(self, action: "HardButtonActive", 
    forControlEvents: UIControlEvents.TouchUpInside) 

    nightmareText.position = CGPointMake(984.116, 237) 
    nightmareText.zPosition = 5 

    goBackButton = UIButton(frame: CGRectMake(137.214, 570, 183, 91)) 
    goBackButton.addTarget(self, action: "GoBack", forControlEvents: 
    UIControlEvents.TouchUpInside) 

    previousLevelButton = UIButton(frame: CGRectMake(468.358, 513, 
    62.173, 89)) 
    previousLevelButton.addTarget(self, action: "MissionDown", 
    forControlEvents: UIControlEvents.TouchUpInside) 

    nextLevelButton = UIButton(frame: CGRectMake(667.928, 515.508, 600, 
    600)) 
    nextLevelButton.backgroundColor = UIColor.blueColor() 
    nextLevelButton.addTarget(self, action: "MissionUp", 
    forControlEvents: UIControlEvents.TouchUpInside) 

    self.addChild(levelSelectBackground) 
    self.addChild(easyText) 
    self.addChild(mediumText) 
    self.addChild(hardText) 
    self.addChild(nightmareText) 
    self.addChild(proceedLabel) 
    self.addChild(survivalText) 
    self.addChild(challangeText) 
    self.addChild(LevelScenePreview) 
    self.addChild(levelNumber) 

    self.view!.addSubview(survivalButton) 
    self.view!.addSubview(challangeButton) 
    self.view!.addSubview(proceedButton) 
    self.view!.addSubview(goBackButton) 
    self.view!.addSubview(goBackButton) 
    self.view!.addSubview(easyButton) 
    self.view!.addSubview(mediumButton) 
    self.view!.addSubview(hardButton) 
    self.view!.addSubview(nextLevelButton) 
    self.view!.addSubview(previousLevelButton) 
     } 
+0

あなたはzPositionsいじり試してみましたか? – sicvayne

+0

@sicvayne UiのボタンにはZポジションがありませんSkNodesのみ –

答えて

2

を定義するために忘れてしまった何かがあります。彼らはちょうどうまく収まりません。それらはスプライトノードとは異なる座標空間を使用し、ノードツリーの一部ではありません。彼らはまだシーンがpausedのときに動作します...それはちょうど混乱です。

SKSpriteNodeをボタンとして作成する必要があります。ボタンのテクスチャを作成し、SKSpriteNodeに貼り付けます。 touchesBegantouchesEndedタップを検出する方法を無効にします。たくさんのボタンがある場合は、SKSpriteNodeサブクラスを追加する必要があります。

私はあなたのためのサブクラスを書かれている:

class ButtonNode: SKSpriteNode { 
    override init(texture: SKTexture?, color: UIColor, size: CGSize) { 
     super.init(texture: texture, color: color, size: size) 
     isUserInteractionEnabled = true 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     isUserInteractionEnabled = true 
    } 

    var onClick: (() -> Void)? 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     onClick?() 
    } 
} 
関連する問題