まとまりのないブログ

something which something is something

swift

swift – SKNodeからSKSpriteNodeへ変換

投稿日:

SKViewからnodeAtPointで取得したノードはSKNodeとして受け取るため、それをSKSpriteNodeにキャストする。Objective-cの時はAnyObjectに突っ込んでからキャストしてればよかったがswiftだと型の判定が厳しくなっている模様

下記コードはSKNodeからSKSpriteNodeへ変換・・・しているというわけではない。SKSpriteNodeであると確信があるので決め打ちしてキャストしているだけ。

サンプルコード

override func touchesBegan(touches: Set, withEvent event: UIEvent?) {
        
        for touch: AnyObject in touches {
            
            var touchPos: CGPoint = touch.locationInNode(self)
            var node = self.nodeAtPoint(touchPos)

            if (node.name == "test"){
                        let sknode :SKSpriteNode = (node as? SKSpriteNode)!
            }
        }
}

-swift

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

no image

touchesBeganとtouchesEndedの間にある遅延について

iOSでtouchesBeganイベントが呼ばれてtouchesEndedが呼ばれるまでの間に約0.4秒ほどの遅延があることがわかった。(マシンの調子が悪い時は0.5秒ほど) touchesBegan …

no image

swift didbegincontactが呼ばれない

SpriteKitの衝突判定のデリゲートメソッドdidbegincontactが呼ばれなくてハマった。シーンにデリゲートの設定をして、衝突するオブジェクトそれぞれにcategoryBitMaskとco …

no image

メインビューとサブビューの座標の違い

メインビューでaddsubviewにてuiviewを追加して、ボタンを押したら別のビューが下からビョーンって出てくるようなものを考えていたが、座標の問題で困った。メインビューの座標とサブビューの座標は …

no image

swift – itunes store にサインイン画面が何度も表示される

iPhoneアプリ開発中にStoreKitの購入処理をデバッグしていたら、アプリ起動時にサインインを求められる画面が表示されるようになった。これが表示されるようになった原因は、直前の購入処理がうまくい …