× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
描画命令のいろいろを書いていきます。
コンテキストを表すctxはCGContextRef型の変数. 色を表すr,g,b,aはCGFloat. 0.0~1.0で指定。 widthはCGFloat. その他はenumなど。 /////////////// 色指定・線の色 CGContextSetRGBStrokeColor(ctx, r, g, b, a); /////////////// 色指定・塗りつぶし色 CGContextSetRGBFillColor(ctx, r, g, b, a); /////////////// 線の太さ指定 CGContextSetLineWidth(ctx, width); PR |
CoreGraphics描画の詳細。
大まかな流れは前回の記事参照。 //////////////////////////////// コンテキストを自分で作成する カレントコンテキストはもともとあるので、そこに直接描画すれば画面に表示することはできる。 しかし、自分でコンテキストを作ることももちろんできる。 ファイルSimpleCoreGraphicsView.h
|
CoreGraphicsで描画するまでの流れ。
5分あればイケます。 |
普通にXCodeでアプリを作っていると、iPhoneアプリケーションになります。
iPad実機やiPadシミュレータで動かした場合、iPhoneサイズの画面での表示になります。(右下に、2倍表示のボタンがある) iPadで動くアプリケーションにしたい場合は、プロジェクトの設定を変更する必要があります。 --- プロジェクト→プロジェクト設定を編集 でプロジェクト設定ウィンドウを開き、 ビルドタブ→Deployment→Targeted Device Family の項目を選択します。 この項目は以下のどれかを選択します iPhone iPad iPhone/iPad |
ファイルへの読み書きの方法はいくつかあります。 ここには、一番簡単な方法を書きます。 //書き込み
|
UIApplicationDelegateプロトコルの主要なメソッドの解説
普通、***AppDelegate.mとして自動的に作られている 前説 background, foregroundはiOS4以降に出てきた概念。 アプリを実行中にホームボタンを押すと、background状態に移行する active, inactiveはiOS4以前からある。 電話がかかってきてアプリを一時中断したときなどにinactiveになる。 backgroundは、inactiveである。(逆は成り立たない) backgroundの間は、ユーザからは見えない。inactiveの間は、操作はできないが見えている可能性があり、描画はしている必要がある。 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions アプリの起動時に呼ばれる 似た関数にapplicationDidFinishLaunching:もあるが、推奨されていないとのこと - (void)applicationWillResignActive:(UIApplication *)application アプリがアクティブ状態から非アクティブ状態になるとき呼ばれる 電話が来て中断したり、ホームボタンを押してアプリが裏にいったとき ゲームを一旦停止する処理を書く 非アクティブ状態のアプリは、実行はされているが、どのResponderもイベントを受け取らない。 - (void)applicationDidBecomeActive:(UIApplication *)application アプリがアクティブ状態になるとき ゲームを再開する処理を書く - (void)applicationWillTerminate:(UIApplication *)application アプリが終了するとき。メモリ上から完全に消し去る ゲームの終了処理を書く 5秒以内に済ませられないと、システムに強制的にキルされる。 iOS4より前なら、ホームボタンを押したときに呼ばれる。 iOS4以降なら、基本的に呼ばれることはない。backgroundで実行し続けるから。ただしシステム(iPhone)が終了したときには呼ばれる。 - (void)applicationDidEnterBackground:(UIApplication *)application iOS4以降。 アプリがバックグラウンドに入ったとき。(ホームボタンを押したとき) 描画に関係のない処理 これが呼ばれる前には、applicationWillResignActiveが呼ばれている - (void)applicationWillEnterForeground:(UIApplication *)application iOS4以降。アプリを選択したとき このあとには必ず applicationDidBecomeActive が呼ばれる 流れ 起動 application:didFinishLaunchingWithOptions: applicationDidBecomeActive ホームボタン押す(バックグラウンドへ) applicationWillResignActive applicationDidEnterBackground アプリアイコン押す(フォアグラウンドへ) applicationWillEnterForeground applicationDidBecomeActive 電話受信、実行中アプリ表示、アラート表示など(非アクティブへ) applicationWillResignActive 電話終了、実行中アプリ表示の終了、アラート消去など(アクティブへ) applicationDidBecomeActive 実行中アプリから消去 --落ちた。なぜ ← 落ちた理由はこれ |
iPhoneの加速度センサの使い方です。
○使い方 1. delegateとするクラスに <UIAccelerometerDelegate>プロトコルを使います。 2. 加速度センサを有効にしたいタイミングで [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0 / 60.0]; [[UIAccelerometer sharedAccelerometer] setDelegate:self]; と記述。 この場合、60分の1秒ごとに加速度を検出し、selfにメッセージが送信されることになります。 3. 以下の関数を実装。 -(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration*)acceleration 60分の1秒ごとに呼ばれます。 UIAccelerationクラスのaccelerationのメンバx,y,zに加速度の方向が入っています(後述)。 4. 終了時には、delegate指定を削除すればOKです。 [[UIAccelerometer sharedAccelerometer] setDelegate:nil]; ○加速度の向きについて 加速度の方向とは、通常は重力の方向が検知されます。iPhoneを思いっきり振るなどした場合は、振った方向の逆向きに加速度が働いたように検知されます。 iPhoneの座標系は、画面左から右を+x方向、ホームボタンから電源ボタンの方向を+y、画面の表方向を+zとした向きに軸が指定されています。 |