Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

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

yataiblue.hatenablog.com

この記事の改訂中ですが、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

Sprite KitのSKViewのプロパティを調べてました。

するとSprite Kitに関して素晴らしい日本語サイトが既にあります。少し古いリファレンスですが、APIに用意されているプロパティには未だに大きな変化は加えられていないので役に立ちます。

spritekit.senchan-office.com

そしてSprite Kitには素晴らしい日本語チュートリアルもあります。私のチュートリアルなど皆さんに必要がありませんが自分のためです。

spritekit.jp

ということで少し遅くなりましたが紹介だけ。

Swiftで遊ぼう! - 745 - Sprite Kit チュートリアル改訂中 3

めちゃめちゃ悩んでいます(^^;)

yataiblue.hatenablog.com

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にベースビューが作られています。

f:id:yataiblue:20160730124739j:plain

「View」を選択してアイデェンティティ・インスペクタを見ると、カスタムクラスのClass名は「SKView」になっています。そうですよね。ベースビューはSKViewでないと、viewDidLoad()メソッド内のコードが動かないでしょう。

let skView = view as! SKView

ベースビューからリファレンスコピーのインスタンスskViewにして実装をしているんです。

どうしてUIViewという説明になっているのだろう? 不思議だ。

今日もこれだけ。

*1:リファレンスがポップアップして表示されます。