工場裏のアーカイブス

素人によるiPhoneアプリ開発の学習記

Objective-C

ポップアップするビューの作り方(2、Swift編)

※本記事はポップアップするビューの作り方(1)の続きとなります。 Swift で MJPopupViewControllerを使ってみる 最近は Swift にも触ってみたのですが、Objective-C に比べると個人的には色々書きやすく、参考にしている情報サイトなどもソースコードをSwif…

ポップアップするビューの作り方(1)

iPhoneアプリ上で、必要なときだけピッカー(UIPickerView)などを出現させてユーザー入力を受け付け、入力が済んだら引っ込ませる…という動作を実装することを考えます。 アクションシートを用いる方法(iOS 8では面倒) 実装法の1つとして、ピッカーなどを…

SpriteKitでのサウンド再生

ゲーム作成の際にはBGMや効果音などのサウンドも、ゲームを盛り上げるためには是非付けたいものです。本記事では、SpriteKitでサウンドを再生するための方法について調べたことをメモします。 SKActionによるサウンド再生 実はSpriteKitでは、アクションの一…

SpriteKitでビットマップフォント

SpriteKit でビットマップフォントを扱う方法がないか模索していたのですが、実はSKLabelNode を用いて、通常の文字ラベルと(ほぼ)同じように扱えることが分かりました。以下ではその方法についてメモしていきます。 まずビットマップフォントの作成ですが…

ゲームアプリの簡単な骨組み的なモノ(SpriteKit)

SpriteKitではある画面(シーン)から別の画面へと、アニメーション付きで移動するような処理を、容易に実装可能な仕組みが備わっています。本記事ではそれらを活用して、下図のようにゲームアプリの簡単な骨組み的なモノを作成してみます。このアプリでは最…

SpriteKitに触れてみる(2)

SpriteKit Game テンプレートの内容 まずはXcode 5で、SpriteKit Game テンプレートを選んでプロジェクトを作成してみます。 作成されたプロジェクトをビルドして実行してみると、最初は下図左のように、深青色の背景に「Hello, World!」という語句がラベル…

SpriteKitに触れてみる(1)

「SpriteKit Game」テンプレートの追加 iOS 7以降向けのアプリ開発に対応したXcode 5から、「SpriteKit Game」なる新しいテンプレートが追加されました。 最近までスルーしてしまっていたのですが、調べてみると、SpriteKit はApple社純正の2Dゲーム開発用フ…

Xcode 5(iOS 7)におけるUIActionSheet利用時の注意点

先日、ついにiOS 7がリリースされ、それと同時にiOS 7向けアプリ開発に対応したXcode 5がリリースされました。さっそくXcode 5を自機に導入し、旧バージョンで作成したあるプロジェクト(UIActionSheetを利用している)をビルドしてみたのですが、そのとき旧…

OpenGL ES2.0でポイントスプライト(2)

※OpenGLでポイントスプライト(1)の続きとなります。 サンプルプログラムの要点 ここでは前回の記事に掲載した、OpenGL ES2.0でポイントスプライトを利用するサンプルプログラムの要点についてメモしていきます。 GLKitを用いたテクスチャの読み込み ポイン…

OpenGL ES2.0でポイントスプライト(1)

OpenGLでは、GL_POINTS で描かれる点(ポイント)の1つ1つにテクスチャを貼付ける「ポイントスプライト」という機能をサポートしています。これらのポイントは、そのサイズを拡大すると実は正方形として描かれており、その全面にテクスチャを貼付けることが…

ピンチ操作による拡大縮小

例えば写真や3Dモデルなどのビューワーアプリ、あるいは地図アプリなどでは、ピンチ操作(2本の指を画面に振れさせ、摘むように指同士を近づけたり、あるいは遠ざけたりする操作)によって対象を拡大縮小する機能がよく備えられています。そこで、前の記事で…

クォータニオンによる視点回転操作

iPhone上で3Dグラフィックスを扱うのであれば、やはり画面タッチ操作により3Dモデルを自由に回転させたりしてみたいもの。画面がタッチされたことや、ドラッグの移動距離の検出自体は touchBegin/touchMoved/touchEnded メソッドを用いて簡単に実現出来ます…

「OpenGL Game」テンプレートを使わずGLKitを使う方法

XCode(この記事執筆時点のバージョンは4.6)で「OpenGL Game」テンプレートを使わずに、例えば「Tabbed Application」など通常のテンプレートを用いたアプリ開発でも、GLKitでOpenGL ES 2.0を使えるようにする手順についてメモします。ここでは例として「Ta…

「OpenGL Game」テンプレートを簡略化

前の記事にも書いたように、XCode 4.6(この記事の執筆時点)に用意されている「OpenGL Game」テンプレートでは、シェーダプログラムを用いるパターンと、GLKitを用いるパターンの両方で、OpenGL ES 2.0により立方体を描画するアプリを自動生成してくれます…

プロパティ宣言の様々な書き方について

Objective-Cにおけるプロパティ宣言についてですが、XCode のバージョンアップなどに伴って様々な書き方が出来るようになっているようですので、簡単にまとめてメモしてみます。 最も基本的(であると思われる)な方法 まずは、一番基本的であると思われる方…

ARCについて色々実験(5)

※ARCについて色々実験(4)の続きとなります。 弱い参照について 実験5-01 これまで述べてきたように、ARCでは変数(id 型など)がオブジェクトを参照する場合、デフォルトで強参照として扱われます。また、以下のように「__strong」という修飾子を変数に付…

ARCについて色々実験(4)

※ARCについて色々実験(3)の続きとなります。 メソッドファミリに属さないメソッドによるオブジェクトの生成(他クラスのメソッドの戻り値として) 実験4-01 srcARC3-01 に、新しいクラスである myClass2 を追加してみます。myClass2 はgetMyClass1: という…

ARCについて色々実験(3)

※ARCについて色々実験(2)の続きとなります。 メソッドファミリに属さないメソッドによるオブジェクトの生成(コンビニエンスコンストラクタ) 実験3-01 これまでの実験では、メソッドファミリに属するメソッドの戻り値として、オブジェクトを返す場合につ…

ARCについて色々実験(2)

※ARCについて色々実験(1)の続きとなります。 自作のイニシャライザによるオブジェクトの生成 実験2-01 srcARC1-01 の myClass1 は num というインスタンス変数を持っていますが、この値を設定する方法が用意されていませんでした。そこで、この myClass1 …

ARCについて色々実験(1)

はじめに iPhoneアプリ開発を勉強する中で、一番の苦労の種となっているのはObjective-Cにおけるメモリ管理です。特に、頭を悩ませていたのがARC(Automatic Reference Counting)という方式についての理解です。Objective-C 2.0 からは、C#のようにガベージ…