Swiftで遊ぼう! - 751 - Sprite Kit チュートリアル改訂中 8
忙しくて毎日のプログラミング勉強もままならない状態です。
少しの時間でもコードを読みます。
SKSpriteKitの勉強をしています。
SKViewに表示するオブジェクトクラスはSKSpriteNodeだと思っていましたが、そうじゃなかったですね。SKSpriteNodeのスーパークラスはSKNodeでした。
SKNodeには以下の子クラスが用意されています。
- SKSpriteNode
- SKVideoNode
- SKLabelNode
- SKShapeNode
- SKEmitterNode
- SKCropNode
- SKEffectNode
- SKLightNode
- SKFieldNode (and subclasses)
- SKCameraNode
- SKAudioNode
- SKReferenceNode
それぞれがどんなものなのか少し知っておく必要がありますね。
今日はこれだけ。
Swiftで遊ぼう! - 750 - Sprite Kit チュートリアル改訂中 7
この記事の改訂中ですが、Xcode 8β4になってエラーが出ます。
GameViewControllerのメソッドが使えなくなっています。
override func prefersStatusBarHidden() -> Bool { return true }
「Method does not override any method from its superclass」が表示されます。
この表示はメソッドに変更があった時に出てきたような。
試しに白紙の行に「prefers...」とタイプしていくと補填機能が働いて「prefersStatusBarHidden」が表示されます。補填をしてしまうと次の様に表示されるでしょう。
override var prefersStatusBarHidden: Bool
そうです。β4から多くのメソッドがプロパティに変更されています。これも計算型プロパティなので実装してやればいいんです。
override var prefersStatusBarHidden: Bool { return true }
ということで少し修正しました。
Swiftで遊ぼう! - 749 - Xcode 8 β4が公開
Xcode 8 β4の公開に併せてiOS10 β4も公開されました。
早速ダウンロードしてiOS10βをテスト機として使っているiPhone5sにインストールしました。
βバージョンが3から4になっただけですが、Xcode 8で用意されているテンプレートのコードに変更がありました!
SKNodeに用意されていた色に関するメソッド「SKColor.green()」がプロパティに変化(SKColor.green)してました。他の色も同様です。
そして、GameViewControllerに用意されていたメソッドもプロパティになっていました。
- shouldAutorotate
- supportedInterfaceOrientations
- prefersStatusBarHidden
- UIDevice.current
少しずつですが変化してますね。ちょっとしたことですが、これじゃ古いコードが全く動きませんね。プログラミングの世界は移り変わりが速い!
Swiftで遊ぼう! - 747 - Sprite Kit チュートリアル改訂中 5
SKViewのプロパティを調べています。
「ignoresSiblingOrder」もSKViewのリファレンスページで調べるとわかりやすい説明がありました。規定値は「false」ということで、ノードの重なりに順序が設定されているようです。
Sprite Kitは2D世界を表現するためX軸、Y軸で位置を決められます。Z軸でノードの重なり具合の設定ができるようです。親ノードは子ノードの前にレンダリングされ、同じノードでも作られた順番で古いものから新しいものへレンダリングされていきます。
このプロパティを「true」にすると、このオーダリングが無視されるのでレンダリングパフォーマンスはよくなります。
ということでチュートリアルでは「true」になります。
今日はこれだけ。
Swiftで遊ぼう! - 746 - Sprite Kit チュートリアル改訂中 4
Swiftで遊ぼう! - 745 - Sprite Kit チュートリアル改訂中 3
めちゃめちゃ悩んでいます(^^;)
Sprite Kitチュートリアルの復習をしているのですが、GameViewControllerクラスのviewDidLoad()メソッド内にあるコードで疑問が生まれました...
let skView = view as! SKView
「view」プロパティをSKViewにキャストしているのですが、Xcode 8 でこの「view」を「Opt + クリック*1」すると、「var view: UIView! { get set }」という説明が出てきます。
あれ?
この「view」プロパティは UIView なんですか?
テンプレートで「Game」を選択すれば、GameViewControllerにベースビューが作られています。
「View」を選択してアイデェンティティ・インスペクタを見ると、カスタムクラスのClass名は「SKView」になっています。そうですよね。ベースビューはSKViewでないと、viewDidLoad()メソッド内のコードが動かないでしょう。
let skView = view as! SKView
ベースビューからリファレンスコピーのインスタンスskViewにして実装をしているんです。
どうしてUIViewという説明になっているのだろう? 不思議だ。
今日もこれだけ。
*1:リファレンスがポップアップして表示されます。