サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
blog.syuhari.jp
Cocos2d-x ver.3 で cocos コマンドという便利なコマンドラインツールが追加されました。実際に使用してみたので、備忘録兼ねてまとめておきます。 最近公式サイトのドキュメントがかなり充実してきていますので、英語が苦ではない方は公式ドキュメントを参考にするとよいかと思います。 How To Start A New Game Cocos2d-x ver.3 をインストールしたディレクトリを ~/cocos2d-x/ として進めていきます。 設定 まず、最初に setup.py コマンドを実行して、cocos コマンドの実行に必要な環境変数を設定します。 $ cd ~/cocos2d-x $ ./setup.py 途中、Android NDK のパスなど聞かれた場合は、NDK をインストールしているパスを入力します。 setup.py を実行すると .bash_profile に
iOS でキャリア判定の方法です。 CoreTelephony フレームワークを使用して下記のように情報を取得することが出来ます。 #import #import CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [netinfo subscriberCellularProvider]; NSLog(@"キャリア名:%@", carrier.carrierName); 上記の NSLog で表示されるキャリア名はソフトバンクなら「ソフトバンクモバイル」、ドコモなら「NTTドコモ」、KDDI なら「KDDI」となります。 CTCarrier クラスのプロパティはそのほかにも Mobile Country Code とか、Mobile Network Cod
iOS7 がリリースされたので、iOS7 対応に関して書こうと思います。 Cocos2d-x ver.2.1.5 で iOS7 対応されたようですが、ver.2.1.5 未満で作成された既存の Cocos2d-x のプロジェクトを iOS7 対応する方法です。素直に Cocos2d-x のバージョンを上げればいいのですが、Cocos2d-x の本体の方を色々といじっている場合などは、なかなか面倒なところです。また、ver.1.x のプロジェクトなどもメジャーバージョンアップさせるのは結構厳しいところです。かと言ってメンテナンスはあるのでここでは必要最低限の対応方法で Xcode5 に対応させたいと思います。 なお、ここで書いている問題は既にリリースされているアプリを iOS7 で動作させても発生しません。あくまで、Xcode5 でビルドしたアプリを iOS7 で動作させたときの問題です。
この画面に何も考えずにモーダルレイヤを配置しても、右下のボタンは押せてしまいます。(モーダルレイヤに表示している画像が右下のボタンに被っていても押せます。) モーダルレイヤでタッチイベントを取得するようにしてタッチを拾っても、右下のボタンは押せてしまいます。理由はレイヤのタッチイベント処理よりもボタンのイベント処理の優先度が高いためです。 そこで、モーダルレイヤ表示中は、CCTouchDispacher の優先度をモーダルレイヤが一番高くなるようにし、モーダルレイヤを閉じる際に、その設定を戻すようにします。そしてモーダルレイヤの ccTouchBegan で無条件に true を返すようにすることにより、タッチイベントを全て拾うようにして、モーダルレイヤ以下のタッチを禁止します。 注意点は CCTouchDispacher を戻すのをデストラクタでやろうとするとメモリリークします。(thi
Cococs2dx で iOS 用のプロジェクトを作成するのは Xcode からテンプレートを使って簡単にできます。しかし、そのプロジェクトを Android にも対応させようと思うと最初の設定が結構面倒です。そこで簡単に iOS/Android 用のプロジェクトを作成する方法を見つけたので備忘録のため書いておきます。よろしければご参考ください。 Xcode 4.6, Cocos2dx ver 2.0.3 で確認しています。 プロジェクトのひな形を作る まずプロジェクトを作るためのフォルダを準備します。今回は ~/Desktop/MyApp として MyApp というアプリを作ります。 次にCocos2dx のフォルダより cocos2dx, CocosDenshion, samples の各フォルダを上記フォルダ内にコピーします。 samples フォルダの中から自分が作りたいアプリに合
追記(2013/5/10) GitHub にプロジェクトを公開しました。よければご参考ください。 https://github.com/syuhari/Blade フルーツニンジャでスワイプしたときのようなブレードエフェクトを Cocos2d-x の CCMotionStreak というクラスを使用して実装してみました。出来上がりは下記動画のような感じです。 CCMotionStreak は指定した画像にカラーエフェクトをかけて表示して、指定した秒数でフェードアウトさせてくれます。さらに CCMotionStreak のインスタンスの位置を動かすと残像を残すような表現ができます。 今回は下記の画像を使いました。※実際は周りの黒い部分は透過しています。
CocosBuilder は無料で使用できるツールで、CocosBuilder を使用すると InterfaceBuilder のように画面レイアウトが簡単に行えるようになります。cocos2d-x も ver2.0 になってから CocosBuilder で作成したファイルを読み込む CCBReader クラスが実装されたため使えるようになりました。 まずは単純に CocosBuilder で作成した画面を表示するコードです。 このコードでは、画面レイアウトなどはできますが、CocosBuilder で作成した画面とコードのやり取りはできません。 やり取りするためには、CocosBuilder でカスタムクラスを指定する必要があります。 カスタムクラスを指定した場合は読み込み方法を少し変える必要があります。 例えば、この CocosBuilder で作成した CCTestLayer に
Cocos2d-x を使用して効果音を同時に再生した場合に Android では5音が上限となります。 この上限をあげる方法です。 Cocos2dx の修正 Cocos2dx の SimpleAudioEngine は Android の効果音再生に SoundPool を使用しています。SoundPool はひとつのインスタンスで複数の音を再生するのですが、インスンス生成時に最大数を決めて生成します。今回はこのインスンス生成時の最大数を変更します。 下記行が SoundPool の同時再生数になるので、この値を修正する。デフォルトでは 5 になっています。 android/src/org/cocos2dx/lib/Cocos2dxSound.java private static final int MAX_SIMULTANEOUS_STREAMS_DEFAULT = 5; ただやみくも
Flash の swf ファイルを Cocos2d や Unity で表示するというのは、先日 GREE さんからオープンソースとして公開された LWF が有名ですが、Cocos2d-x では使用できませんでした。ところが去年末に Super Animation Converter というツールが公開されました。 cocos2d-x のフォーラムでのスレッド http://www.cocos2d-x.org/boards/6/topics/19621?r=19711 GitHub https://github.com/raymondlu/super-animation-samples GitHub から落としてくると、中にサンプルプロジェクト(Cocos2d-x と Cocos2d-iPhone)とコンバータ、マニュアル(PDF) などが入っています。PDF にざっと目を通せば使い方はすぐ
iOS6 の新機能 in-app app purchase を組み込み方です。 “in-app app purchase” は自分のアプリ内に App Store のような画面を表示して、別のアプリを購入できる機能になります。 SKStoreProductViewController のインスタンスを生成して、loadProductWithParameters:completionBlock メソッドに表示したいアプリの ID を渡し、blocks 内でビューを表示します。 SKStoreProductViewController *viewController = [[SKStoreProductViewController alloc] init]; viewController.delegate = self; NSDictionary *parameters = @{SKStore
EAGLView の上に UIWebView を表示した場合、UIWebView を閉じるタイミングや HTML 内のリンクをタップするタイミングでソフトウェアキーボードが表示されてしまいます。原因は CCTextFieldTTF クラスでキーボード入力を可能にするために EAGLView が FirstResponder になっているためです。 解決方法は CCTextFieldTTF クラスを使用しないのであれば、EAGLView を First Responder にしないことで上記現象は解決できます。 EAGLView.mm - (BOOL)canBecomeFirstResponder { return NO; } もし CCTextFieldTTF クラスを使用するなら、EAGLView にフラグを追加して CCTextFieldTTF を使用するときにはフラグセットして EA
すごい久しぶりにブログを更新します。 春くらいから Cocos2d-x を使用して開発を行なっています。これからちょこちょこと Cocos2d-x のことを書いていこうと思います。 今回は左下に表示される FPS 表示の横に残りのメモリ量を表示する方法です。 下記の cocos2d での方法を cocos2d-x に移植しました。 Raising awareness: memory usage & leaks デバッグ時に自分の思い通りにメモリ解放できているか確認できて便利です。(厳密には出来ませんので大雑把に把握する感じです) CCDirector.h protected: // メソッドの定義を追加 static double getAvailableBytes(); static double getAvailableKiloBytes(); static double getAva
多国語対応させるために gettext を使用します。WordPress などでも使われています。ざっくり説明すると、まずエディタで po ファイルを作成して、それをバイナリの mo ファイルに変換します。gettext はこの mo ファイルを使用して各国語に変換します。 Windows では poEdit など専用のソフトがありますが、Mac では手頃なソフトがないのでエディタで編集して msgfmt コマンドを使用して mo ファイルに変換します。 以下、変換方法です。 まず適当なエディタで編集する po ファイルを開き編集 ターミナルから以下のコマンドで mo ファイルに変換 $ msgfmt -o /path/to/file.mo /path/to/file.po 関連する投稿 Eclipse PDT1.0 を Mac OS X にインストール&日本語化 Dock に最近使った項
フォーム画面を動的に表示してある条件のときにはラジオボタンなどを disabled にしたりします。 今回もあるフォームを作成していて在庫が0のときに select タグで表示する項目を選択できないようにしたかったので調べてみたところ、option タグにも disabled 属性がありました。 そこで下記のようにしてみたところ <form action=""> <select> <option>オプション1</option> <option disabled="disabled">オプション2</option> <option>オプション3</option> <option>オプション4</option> </select> <input type="submit"> </form> うまく選択不可になりました。 ところが Firefox では OK だったのですが、IE6では選択可能に
Xcode のブレークポイントを条件判定を指定して条件に合った時だけ止める方法です。 例えば以下のコードのように1000回ループを回す処理があったとします。 for (int i=0; i<1000; i++) { NSLog(@"i=%d", i); } このループの500回目、つまり i==500 の時だけブレークポイントで止める方法になります。 NSLog の行にブレークポイントを設定して、コンテキストメニューから「ブレークポイントを編集」を選択します。 ブレークポイントの条件を指定します。今回は i==500 を指定しました。 これで実行すると、ループ処理で毎回止まることなく i==500 のときのみ止めることができます。 値を監視するとかはよく使っていたのですが、この条件判定で止める方法は知りませんでした。以下の本を読んで初めて知りました。まだまだ勉強不足です。 関連する投稿 [
Finder のメニューから「移動」「サーバへ接続」を選択 LinkStation の IP アドレスを入力 その後 LinkStation へログインするウィンドウが出る。ゲストまたは自分で登録したユーザ ID とパスワードを入力すれば接続完了。 参考サイト がんちゃんのブログ: Link Station HD-H160LANを Mac OS Xで使う方法 関連する投稿 CakePHP PDT の補完機能をビューのヘルパーで使用する方法 CakePHPカンファレンス東京 申し込み日程決まる X02HT 購入 [iPhone 開発メモ] 本体の回転を検知する 4月に読んだ本 This entry was posted by matsuura on 7月 23, 2008 at 3:03 pm, and is filed under Mac. Follow any responses to
iTunes に iPhone を接続すると自分で登録した iPhone の名前が出ますが、その名前を変更する方法です。最初やり方が分からず、iTunes の右側のペインばかり見ていたのですが、もっと単純な話でした。 左側のペインのデバイスの名前の部分をクリックすると変更できました。 参考サイト:iPod をリネームする方法 関連する投稿 Objective-C でプロパティ名とインスタンス変数名を変える方法 Beginning iPhone Development の翻訳本「はじめてのiPhoneプログラミング」が出る iTunes Connect の Tax Info を登録、W-8BEN が届かないトラブル発生 [iPhone] JSON Framework の使い方(準備編) [iPhone 開発メモ] iPhone のホーム画面のような UI を作る This entry was
iOS4.0 から使える Quick Look フレームワークを試してみました。 画像、PDF、HTML、iWorks、MSOffice などのファイルのプレビューをしたり、印刷やファイル形式によって対応している他のアプリで開いたりすることができます。 UITableViewController などと同じようにデータソースを指定して、プレビューさせるファイルがいくつあるか、indexPath で指定されたファイルのファイルパスを返すなどを実装すれば簡単にプレビュー画面を作成できます。 #import QLPreviewController* previewController = [[QLPreviewController alloc] init]; previewController.dataSource = self; previewController.delegate = sel
以前メールに添付された PDF ファイルをアプリで開けるようにするやり方を書きました。 [iPhone/iPad] メールの添付ファイルをアプリケーションで開けるようにする 今回は PowerPoint ファイルを開けるようにしたのですが、より実践的にどのファイルフォーマットでも指定できるようにやり方、調べ方を説明します。 パワーポイントファイルの指定方法 パワーポイントの拡張子は2種類あります。ppt と pptx です。具体的には LSItemContentTypes で UTI(Uniform Type Identifiers) を指定します。UTI とはアップルが定めたデータ識別子です。ここに ppt と pptx の UTI を指定することによりメール添付ファイルなどをアプリで扱えるようになります。 <key>CFBundleDocumentTypes</key> <array>
Cocos2d-x ver.3 で cocos コマンドという便利なコマンドラインツールが追加されました。実際に使用してみたので、備忘録兼ねてまとめておきます。 最近公式サイトのドキュメントがかなり充実してきていますので、英語が苦ではない方は公式ドキュメントを参考にするとよいかと思います。 How To Start A New Game Cocos2d-x ver.3 をインストールしたディレクトリを ~/cocos2d-x/ として進めていきます。 (続きを読む…)
なんか分かりにくいタイトルになってしまった。何がしたいかというと、iPad で UIImagePickerController を使用してフォトライブラリから写真を読み込む際に allowsEditing = YES にしておくと写真を選択後に画像の位置とスケールを指定することができます。UIImagePickerControllerEditedImage でその編集後の UIImage を取り出せるのですが、このサイズが 320 x 320 (厳密にはちょっと違った)で帰ってきます。これでは iPad で表示するには小さすぎます。そこで、元画像を編集後のデータを元に再度トリミングすることにしました。 ポイントは UIImagePickerControllerCropRect で編集した画像の位置とサイズが NSValue で取得できるので getValue: メソッドで CGRect の
自宅の Windows マシンでは Picasa でデジカメ写真を管理しています。写真データは LAN 内の NAS にすべて入れて保存しているのですが、昨日購入した IdeaPad に Picassa をインストールしたときに NAS の写真をどうやって管理させるのかを失念してしまい、しばらく色々と調べたので後々のためのメモです。 結論としては NAS をネットワークドライブとして割り当てると Picasa のフォルダ管理画面からネットワークドライブ内が見られるようになるのでそれで管理できます。 では、ネットワークドライブの割り当て方です。 マイコンピュータを開き、メニューの「ツール」->「ネットワークドライブの割り当て」を選択します。 上記ウィンドウで割り当てたいドライブを選択して、割り当てるファルダを「参照」ボタを教えて選択します。 これでネットワークドライブの割当は終了。後は Pi
iPhone アプリを Xcode のメニューからユニバーサル化できますが、多分やり方が悪いのだと思うのですがどうもうまくいかないので面倒なので手作業でやることにしました。(アップルのマニュアルには必ず Xcode のメニューからやれって書いてあるので、やるときは自己責任でお願いします。) 手作業でできると iPad アプリを先に作ってそれをユニバーサル化することもできるので覚えておいて損はないと思います。 plist で iPad 用の Main nib ファイルを設定する info.plist で Main nib file base name に “MainWindow” が指定されていると思います。この nib ファイルがアプリの起動時に使用されます。そこで iPad のときに使用する nib ファイルを “Main nib file base name (iPad)” を追加して
iPhone/iPad アプリに Dropbox からファイルの読み込みがしたくて、Dropbox API を使ってみました。SDK が用意されていてそれを使えば簡単にアプリに組み込むことが可能です。 アプリの登録 Dropbox に自分が作成するアプリを登録して API Key などを取得します。まず下記 URL よりアプリを登録します。 https://www.dropbox.com/developers/apps 登録が終わると登録したアプリ一覧の右に Options というリンクがあり、そこから開いたページの一番下の App keys というところに “Key” と “Secret” があります。これはあとで SDK の組み込みで使用します。 SDK の準備 Dropbox API は REST でリクエストを出しても使えます。しかし iOS 用の SDK が用意されているのでこれ
iPhone や iPad のメールで添付ファイルをアプリケーションに取り込む方法です。 扱えるファイルを指定する アプリケーションで扱えるファイルタイプを info.plist で指定します。例えば PDF を開けるようにしたい場合は以下のようにします。 ただ、plist エディタだと設定が面倒なので、info.plist ファイルを右クリックして「形式を指定して開く」から「ソースコードファイル」を指定して XML で直接指定した方が簡単です。 <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeName</key> <string>PDF</string> <key>LSHandlerRank</key> <string>Alternate</string> <key>LSItemContentTypes</
iPad では VGA アダプタを接続して外部のディスプレイやプロジェクタに出力することができます。ミラーリングなどの機能はなく、自分で UIWindow を作成して出力する UIView を指定して出力します。 流れとしては、 ・外部ディスプレイの出力サイズを取得する ・UIWindow を作成する ・その UIWindow に 出力する UIView を設定する ・UIWindow を外部出力に指定する また、Notification を設定しておくことにより外部ディスプレイが接続されたり、接続が解除されたりしたときには通知を受けることが可能です。 外部出力する処理 UIScreen の screens で外部ディスプレイがあるかチェックし、あれば最大の出力サイズを取得し UIView をそのサイズで作成して設定します。 NSArray *screens = [UIScreen scr
iPad では iTunes に接続してファイルを共有することができます。このファイル共有方法のやり方です。 plist の設定 info.plist に “Application supports iTunes file sharing” を追加し、値を true (Value にチェック)にします。 これだけで設定は終わりです。 AdHoc ビルドしてファイルを共有する plist に設定するだけでファイル共有できるのですが、、普通にビルドして実機で実行しても iTunes でファイル共有することはできません。iTunes と同期することによりファイル共有するので、AdHoc ビルドして実機にインストールしなければいけません。AdHoc ビルドの方法はネットで検索すれば分かるのでここでは説明しませんが、AdHoc ビルドしてインストールするということがポイントになります。 AdHoc
iOS3.2 で追加された UIGestureRecognizer を使うと様々なジェスチャーを簡単に識別することができます。ただし、iOS3.2 以降で利用可能なので使用する際には注意が必要です。iPad アプリなら問題ないです。識別できるジェスチャーは以下のとおりです。 タップ ピンチ パン(ドラッグ) スワイプ ローテイト ロングプレス ローテイトは2本指でタッチして回転させることです。1本指でタッチして回転させてもパン(ドラッグ)としてしか認識されません。 使い方はそれぞれのインスタンスを作成して、ジェスチャーを認識したときに呼ぶアクションを指定して、そのアクションでジェスチャー認識時の処理を行います。 タップ numberOfTapsRequired に認識するタップ数を指定します。デフォルトは1です。 // シングルタップ UITapGestureRecognizer* tap
NSArray 内のオブジェクトの指定したメンバ変数でソートする方法です。 NSArray に複数の Book クラスが入っているとします。Book クラスは以下のようなメンバ変数を持っています。 @interface Book: NSObject { NSInteger no; NSString* furigana; NSDate* publish_date; } ソートするには NSArray 内のオブジェクトに NSComparisonResult を返すメソッドを作り、そのメソッド内で比較をします。 数値でのソート 数値での比較は単純に比較をしてその結果により NSComparisonResult を返します。下記の例は降順にソートしています。昇順にソートしたいときは NSOrderedAscending と NSOrderedDescending を逆にすれば OK です。 -
次のページ
このページを最初にブックマークしてみませんか?
『Sun Limited Mt.』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く