devlog [naru design]

プログラミングやテクニカルな内容の覚え書き。

デフォルトの状態ではプロジェクト名が表示されているけど、
端末の言語設定によって、アプリの名前を変えるにはどうすればいいか?

app_names

続きを読む

選択されているポリゴンを背景レイヤーへ移動します。

※標準で有りそうな機能ですが、見つけることが出来なかったので作りました。

続きを読む

delegateをretainしていると、渡した側でメモリが解放されない状態が起きるようです。

retainじゃなく、assignで。

# retainをassignとすることでメモリが解放されない現象は解消しました。
# まだ、ちゃんと理解できていないのでメモ書きのみ。

tagを指定してノードに追加しておけば、後からtagをキーにして取得することができます。

addChild時にタグを指定するか、

tagプロパティを指定しておくか。

取得するには、getChildByTag:メソッドを使う。

メモ:

  • 子は取得できるが、孫は無理。孫の親を指定して取得すれば可能。
  • 数値そのままだと、使い勝手が良くないのでenumで定数を定義しておく。

CCMenuItem, CCMenuを使って簡単なメニューを作成します。

メニュー項目が選択された際の処理方法として、

  • 別々のメソッドで処理する(最初から分岐)
  • 1つのメソッドで処理する(内部で分岐)

の2つが考えられます。

続きを読む

疑問:

cocos2dのテンプレートから作成したプロジェクトで、Supported Interface OrientationsをPortraitだけにしているにも関わらず、Achievementsから戻った時にiOSシミュレータがLandscapeになってしまう。


iOSシミュレータの設定(デバイス:iPhone, バージョン:5.1)

結論:

AppDelegate.mを修正する必要があります。

続きを読む

Objective-Cのメモリ管理が、なかなか理解できていません。

cocos2d-iphone2.0は「cocos2d is ARC compatible.」と書かれているものの、標準のテンプレートで作成したプロジェクトがARC対応になるわけじゃない。あとから手動でゴニョゴニョする必要がある模様。

疑問:

以下のCCSpriteのインスタンス(sprite)は、deallocでreleaseする必要があるのか?

解答:

libs/cocos2dの中のファイルCCSprite.mの、spriteWithFile:が書かれている部分を見てみました。

allocされて、initiWithFile:メソッドが呼ばれ、autoreleaseが指定されていました。
ということは…

APIのReferenceだけでなく、時にはソースを覗いてみるのも良いかもしれませんね。

AdmobをSingletonで実装しようとしていた時に、以下のページを見つけました。

Creating A GADBannerView Singleton in AdMob Applications

SingletonとはGoFのデザインパターンの1つで、
「1つのインスタンスのみ作成することが許された仕組み」
を実現する方法です(cocos2dのCCDirectorもこれ)。

この記事を参考にして、ゲームの状態を保存するクラスをSingletonパターンで作ってみました。

最初にsingletonメソッドが呼ばれた時にGameStatusクラスのインスタンスを作成し、staticな変数sharedに保存。
以後呼び出された時には、すでに作成済みの保存されているインスタンス(shared)が返される。

呼び出し方は、以下の様な感じ。

cocos2dで[CCDirector sharedDirector]と書くのと同じですね。