Swift にスプライトノードが存在するかどうかを検出する

アストラム

SKNode (アチーブメントと呼ばれる) のサブクラスを介して作成したノードの 1 つが存在するかどうかを検出しようとしています。存在しない場合は、ブール変数をオフにしようとしています。

SKShapeNode を見つけるために使用するもの (「インジケーター」と呼ばれます)

func checkIndicatorStatus() {

    moveableArea.enumerateChildNodes(withName: "Achievement") {
        (node, stop) in

         let Indicate = node

        Indicate.enumerateChildNodes(withName: "Indicator") {
            node, stop in

            if let Achievement = node as? Achievements {

                    menuAchieveNotificationOn = false

            }
        }
    }
}

ノードを具体的に列挙して検索しようとしましたが、何もしていないようです。私は何を間違っていますか?

ここに私のサブクラスがあります。私のシーンには、成果と名付けられたそれらの多くが表示されています。

class Achievements: SKNode {

//Nodes used throughout the SKNode class
var achievementLabel = SKLabelNode()
var achievementTitleLabel = SKLabelNode()
var achievementNode = SKSpriteNode()
var notifyCircle = SKShapeNode()

//Amount Variables used as Achievement Properties
var image: String = ""
var information: String = ""
var title: String = ""
var amount = 0
var neededAmount = 0
var notification:Bool = false
var stage = 0


func getachievementData(AchName: String) {

    let getDataRequest:NSFetchRequest<Achievement> = Achievement.fetchRequest()
    getDataRequest.predicate = NSPredicate(format: "theSearchName == %@" , AchName)

    do {

        let searchResults = try CoreDatabaseContoller.getContext().fetch(getDataRequest)

        //print("number of results: \(searchResults.count)")
        for result in searchResults as [Achievement] {

            title = result.theName!
            information = result.theDescription!
            image = result.theImage!
            amount = Int(result.aAmount!)
            neededAmount = Int(result.aNeededAmount!)
            stage = Int(result.aStage!)

            if result.aHasBeenAchieved!.intValue == 1 {

                notification = true
            }

        }
    }

    catch {

            print("ERROR: \(error)")

    }

    createAchievement()
}

func createAchievement() {

    let tex:SKTexture = SKTexture(imageNamed: image)

    achievementNode = SKSpriteNode(texture: tex, color: SKColor.black, size: CGSize(width: 85, height: 85))  //frame.maxX / 20, height: frame.maxY / 20))
    achievementNode.zPosition = -10
    achievementSprites.append(achievementNode)


    self.name = "Achievement"
    self.addChild(achievementNode)
    self.zPosition = -11

    createAchievementLabels()

}

func createAchievementLabels() {

    achievementTitleLabel = SKLabelNode(fontNamed: "Avenir-Black")
    achievementTitleLabel.fontColor = UIColor.black;
    achievementTitleLabel.fontSize = 15 //self.frame.maxY/30
    achievementTitleLabel.position = CGPoint (x: 0, y: 50)
    achievementTitleLabel.text = "\(title)"
    achievementTitleLabel.zPosition = -9
    addChild(achievementTitleLabel)

    achievementLabel = SKLabelNode(fontNamed: "Avenir-Black")
    achievementLabel.fontColor = UIColor.black;
    achievementLabel.fontSize = 13 //self.frame.maxY/30
    achievementLabel.position = CGPoint (x: 0, y: -55)
    achievementLabel.text = ("\(amount) / \(neededAmount)")
    achievementLabel.zPosition = -9
    addChild(achievementLabel)

    if notification == true {

        notifyCircle = SKShapeNode(circleOfRadius: 10)
        notifyCircle.fillColor = .red
        notifyCircle.position = CGPoint(x: 30 , y: 35)
        notifyCircle.zPosition = 1000
        notifyCircle.name = "Indicator"
        addChild(notifyCircle)
    }

  }
}  

編集1

下の画像からわかるように、それぞれに個別の名前とロック解除基準を持つ多数の異なる実績ノードがあり、実績がロック解除されると、インジケーターが作成され、ここで 2 つの X ノードに表示されるグラフィックが変更されます。それぞれの右上隅にある色付きの赤い円は「インジケーター」です (その下部にあるサブクラスを見ると、インジケーターの作成があります)

画像の右下隅にある大きな赤いボタンは、ブール変数 (menuAchieveNotificationOn) によって制御されるインジケーターを備えた実績メニュー ボタンです。私が達成しようとしているのは、一度の実績です。インジケータがそれぞれ押されていると、ノードから削除されます。

私がやろうとしているのは、各ノードを検索して、インジケーターがまだ存在するかどうかを確認することです。変数 (menuAchieveNotificationOn) を false にします。

ここに画像の説明を入力してください

スティーブ・アイブス

これを使用できるはずです:

if let indicatorNode = childNode(withName: "//Indicator") as! SKShapeNode? {
        menuAchieveNotificationOn = false
    } else {
        menuAchieveNotificationOn = true
    }

編集: シーン内のすべての「インジケーター」ノードに対していくつかのコードを実行します。いずれかが見つかった場合、activationsFound は true に設定されます。

achievementsFound = false
enumerateChildNodes(withName: "//Indicator") { indicatorNode, _ in
    // Do something with indicatorNode
    achievementsFound = true
}

これは単純すぎるように思えますが、私はあなたの意図を誤解していたかもしれません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

UITapGestureRecognizer-タップ位置にスプライトがあるかどうかを検出します(swift)

分類Dev

Swiftでデバイスまたはシミュレーター用にアプリがビルドされているかどうかを検出する方法

分類Dev

Swift(4.1)アプリが外部ソースから開かれているかどうかを検出する方法

分類Dev

Swift:SCNNodeでヒットテストを検出できませんか?vector3がノードに含まれているかどうかを確認しますか?

分類Dev

Swiftで、アラートを表示するためにアプリの起動数を検出するにはどうすればよいですか?

分類Dev

カレンダーにイベントが存在するかどうかを確認する-Swift

分類Dev

Swift Xcodeでノードが2秒ごとにジャンプできるタイマーを設定するにはどうすればよいですか?

分類Dev

Swiftを使用してiOSアプリでデータ転送があるかどうかを検出する

分類Dev

アプリ(Swift)でコマンドCを検出するにはどうすればよいですか?

分類Dev

デバイスがSwift4のiPhoneXであるかどうかをどのように検出できますか?

分類Dev

tearDown()関数でテストが失敗したかどうかを検出する-Xcode UIAutomation、XCTest、Swift

分類Dev

Swift 3:UIScrollViewでタッチイベントを検出するにはどうすればよいですか?

分類Dev

Swift 3.0でスプライトをドラッグアンドドロップするにはどうすればよいですか?

分類Dev

テキストビューのテキストがSwift3のすべての行でnilであるかどうかを検出するにはどうすればよいですか?

分類Dev

SwiftのeditActionsForRowAtIndexPathを使用して、セルが通常のステータスにスワイプされたことを検出するにはどうすればよいですか?

分類Dev

Swiftのドキュメントディレクトリにファイルが存在するかどうかを確認する方法

分類Dev

ウィンドウのないSwiftを使用してmacOSでCapsLockステータスを検出するにはどうすればよいですか?

分類Dev

UserDefaultが存在するかどうかを確認する-Swift

分類Dev

SwiftでAVPlayerViewControllerを使用してフルスクリーンモードを検出するにはどうすればよいですか?

分類Dev

swift-どのViewControllerアプリケーションからバックグラウンドに入るのかを検出する方法は?

分類Dev

アレイが存在するかどうかを確認するSwift

分類Dev

Swiftでスライダーの値をリセットするにはどうすればよいですか?

分類Dev

SwiftアプリがXcodeから実行されているかどうかを検出します

分類Dev

Swiftを使用してEvernoteENMLノートをアップロードするにはどうすればよいですか?

分類Dev

GameViewController.swiftにGameScene.swiftとは異なるスプライトキットファイルをロードするにはどうすればよいですか?

分類Dev

swiftとspriteKitを使用して、ノードの外側のポイントを中心にSKSpriteNodeを回転させるにはどうすればよいですか?

分類Dev

ユーザーが Firebase swift 3.0 をすでに存在するかどうかを確認します

分類Dev

スプライトキット| Swift3 | SKWarpGeometryをノードに適用する

分類Dev

SwiftのtouchedMoved中に新しいビューを検出するにはどうすればよいですか?

Related 関連記事

  1. 1

    UITapGestureRecognizer-タップ位置にスプライトがあるかどうかを検出します(swift)

  2. 2

    Swiftでデバイスまたはシミュレーター用にアプリがビルドされているかどうかを検出する方法

  3. 3

    Swift(4.1)アプリが外部ソースから開かれているかどうかを検出する方法

  4. 4

    Swift:SCNNodeでヒットテストを検出できませんか?vector3がノードに含まれているかどうかを確認しますか?

  5. 5

    Swiftで、アラートを表示するためにアプリの起動数を検出するにはどうすればよいですか?

  6. 6

    カレンダーにイベントが存在するかどうかを確認する-Swift

  7. 7

    Swift Xcodeでノードが2秒ごとにジャンプできるタイマーを設定するにはどうすればよいですか?

  8. 8

    Swiftを使用してiOSアプリでデータ転送があるかどうかを検出する

  9. 9

    アプリ(Swift)でコマンドCを検出するにはどうすればよいですか?

  10. 10

    デバイスがSwift4のiPhoneXであるかどうかをどのように検出できますか?

  11. 11

    tearDown()関数でテストが失敗したかどうかを検出する-Xcode UIAutomation、XCTest、Swift

  12. 12

    Swift 3:UIScrollViewでタッチイベントを検出するにはどうすればよいですか?

  13. 13

    Swift 3.0でスプライトをドラッグアンドドロップするにはどうすればよいですか?

  14. 14

    テキストビューのテキストがSwift3のすべての行でnilであるかどうかを検出するにはどうすればよいですか?

  15. 15

    SwiftのeditActionsForRowAtIndexPathを使用して、セルが通常のステータスにスワイプされたことを検出するにはどうすればよいですか?

  16. 16

    Swiftのドキュメントディレクトリにファイルが存在するかどうかを確認する方法

  17. 17

    ウィンドウのないSwiftを使用してmacOSでCapsLockステータスを検出するにはどうすればよいですか?

  18. 18

    UserDefaultが存在するかどうかを確認する-Swift

  19. 19

    SwiftでAVPlayerViewControllerを使用してフルスクリーンモードを検出するにはどうすればよいですか?

  20. 20

    swift-どのViewControllerアプリケーションからバックグラウンドに入るのかを検出する方法は?

  21. 21

    アレイが存在するかどうかを確認するSwift

  22. 22

    Swiftでスライダーの値をリセットするにはどうすればよいですか?

  23. 23

    SwiftアプリがXcodeから実行されているかどうかを検出します

  24. 24

    Swiftを使用してEvernoteENMLノートをアップロードするにはどうすればよいですか?

  25. 25

    GameViewController.swiftにGameScene.swiftとは異なるスプライトキットファイルをロードするにはどうすればよいですか?

  26. 26

    swiftとspriteKitを使用して、ノードの外側のポイントを中心にSKSpriteNodeを回転させるにはどうすればよいですか?

  27. 27

    ユーザーが Firebase swift 3.0 をすでに存在するかどうかを確認します

  28. 28

    スプライトキット| Swift3 | SKWarpGeometryをノードに適用する

  29. 29

    SwiftのtouchedMoved中に新しいビューを検出するにはどうすればよいですか?

ホットタグ

アーカイブ