【Cocos2d】Unknown register name ‘q0’ in asm というエラーが出た時

実機でテストしようとしたら以下の様なエラーが出てしまいました。

Unknown register name ‘q0’ in asm

そんなときの対処法。

__ARM_NEON__

↑このように書いてある箇所を↓のように変更します。

__ARM_NEON_7

mat4.cとneon_matrix_impl.cで1箇所ずつ書かれている箇所があるので、両方修正します。

参考元 : http://stackoverflow.com/questions/21510187/unknown-register-name-q0-in-asm

ghostlyIcons.は消して良いのか

GrandPerspective Mac

 

結論。消して良い。

以下を参考にしました。
http://stackoverflow.com/questions/16938659/can-i-safely-delete-the-contents-of-the-library-application-support-iphone-sim

現在、開発機にMacBookAirの128GBストレージのものを使っているのですが、容量的にカツカツになってきたのでいらないファイルの整理を行いました。

その中で、iPhoneシュミレーターのiOS6.1の一時ファイルと思われるディレクトリ「~/Library/Application Support/iPhone Simulator/6.1/tmp」の中身が1GB以上もファイルを持っており、容量を圧迫していることがわかりました。

ghostlyIcons.というのは見たことのないファイルなのでよくわからなかったのですが、リンク先によれば、tmpフォルダにあるものは基本的には削除して良いものだということです。

また、ghostlyIcons.自体がバグにより生成されたものなのではないかということも書いてありました。

というわけでghostlyIcons.のファイルを全部削除。
そもそもiOS6.1のシュミレーターは最近ほとんど使っていないので、なにか起きてもそれほど影響はないのですけどね。

GrandPerspective Macちなみにどのファイルやディレクトリが容量が大きいか、というのは、GrandPerspectiveというフリーソフトを使いました。

どのファイルがどれだけ容量を食っているのかを可視化してくれます。

Xcode5.1にしたら、cocos2dでエラーが出た

Xcode5.1にアップデートしたら、cocos2dで以下の様なエラーが出ました。

Redefinition of ‘__ccContentScaleFactor’ with a different type: ‘CGFloat’ (aka ‘double’) vs ‘float’

というわけでググったらこちらのページに解決法が載っていました。

http://www.cocos2d-iphone.org/forums/topic/redefinition-error-__cccontentscalefactor/

CCDirectorIOS.hの109行目です。

[objc]
// optimization. Should only be used to read it. Never to write it.
//extern CGFloat __ccContentScaleFactor; // CGFloatをfloatに修正
extern float __ccContentScaleFactor;
[/objc]

↑こんなかんじ。

同様に実装の方も修正。
CCDirectorIOS.mの66行目です。

[objc]
// CGFloat __ccContentScaleFactor = 1; // CGFloatをfloatに修正
float __ccContentScaleFactor = 1;
[/objc]

とりあえず動くようになりました。

デバッグ用にスロー再生する cocos2d

デバッグ用にスロー再生したいとき。

cocos2dのテンプレートで作成したプロジェクトのAppDelegate.mのapplication:didFinishLaunchingWithOptions:の最後の方に以下の一文を入れます。(return YES;の前。)

[objc]
– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//【中略】

// 時間を5倍にする
[director_ scheduler].timeScale = 0.2;

return YES;
}
[/objc]

これで通常の5分の1のスロースピードで動きます。
timeScaleを2とかにすると、2倍の早さで動きます。

スプライトを、回転軸を指定して回転させる cocs2d

Cocos2d。先日の「Nodeを回転させる」の発展版。

デフォルトだとスプライトは中心に回転軸があるのですが、
これをずらしたい時の方法。

[objc]
// -45度まで回転させるCCRotateをつくる
CCRotate *rotateToMinus45 = [CCRotateTo actionWithDuration:0.2 angle:-45];

// スプライトの回転軸(中心点)を変更。ccp(0,0)だと左下、ccp(1,1)だと右上
hogeSprite.anchorPoint = ccp(0, 0);

// スプライトを回転させる
[hogeSprite runAction:rotateToMinus45];
[/objc]

中心軸(anchorPoint)を変更すると、回転軸も変わります。
中心軸は0~1で指定します。デフォルトは中心なのでccp(0.5,0.5)ですね。
中心軸を変更すると、それにともなって描画位置も変更されるので、座標の調整が必要です。

オナ禁カウンターが累計一万ダウンロードを達成しました

おかげさまで、オナ禁カウンターが全世界累計1万ダウンロードを達成いたしました。

ダウンロードをしてくださいました皆様、ありがとうございます。
引き続き、改良を進めてまいります。

これからも「オナ禁カウンター」をよろしくお願い致します。

Nodeを回転させる cocos2d

cocos2dでnode(スプライトなど)を回転させる方法。
CCRotateToだと、指定の角度まで。
CCRotateByだと、指定の角度だけ回転させる。

[objc]
// -45度まで回転させるCCRotateをつくる
CCRotate *rotateToMinus45 = [CCRotateTo actionWithDuration:0.2 angle:-45];

// スプライトを回転させる
[hogeSprite runAction:rotateToMinus45];
[/objc]

iPhone5, 5s用ペーパープロトタイプ用のPDFテンプレート A4サイズ

iOS7, iOS8用のiPhone5サイズのペーパープロトタイピングのテンプレートを作成しました。(2015/2/2 修正)

【ダウンロードはこちらから↓】

Aタイプ : iPhone_paper_prototype.pdf

Bタイプ : iPhone_paper_prototype_type_b.pdf

【Aタイプ】
画面3つ

iPhoneアプリ ペーパープロトタイピング
iPhoneアプリ ペーパープロトタイピング

 

【Bタイプ】

画面2つ、記入スペース有り

iPhoneアプリ ペーパープロトタイピング
iPhoneアプリ ペーパープロトタイピング

A4でプリントアウトすると、大体iPhoneと同じぐらいのサイズになります。

ここに書き込んだものをプロトタイプ用のアプリ「POP」で撮影して、画面遷移を見たりしています。

【ダウンロードはこちらから↓】

Aタイプ : iPhone_paper_prototype.pdf

Bタイプ : iPhone_paper_prototype_type_b.pdf

NSArrayにCGPointを格納する

NSArrayにはNSObjectしか入れられないので、CGPointも入りません。

ではどうするかというと、NSObjectにしてしまいます。

こんなかんじ。

[objc]
NSArray *array = @[[NSValue valueWithCGPoint:CGPointMake(700, 270)],[NSValue valueWithCGPoint:CGPointMake(800, 270)]];
[/objc]

値を取り出すときはこう。

[objc]
CGPoint cgPoint = [[array objectAtIndex:0] CGPointValue];
[/objc]

Safariの開発者向けの証明書発行

safari developer page

Safariの拡張などを作るときにはAppleに開発者登録をしなければならないのですが、その手順を紹介します。
iPhoneアプリなどだと実機で動かすには毎年1万円程度を支払わなければならないですが、Safariの場合は無料です。
基本的な手順はiOSアプリの開発者登録と同じです。

Safariの開発者用ページを探す

ここです。

https://developer.apple.com/safari/

safari developer page

https://developer.apple.com/ の下の方にリンクがあります。

Safari Developer 向けの Dev centerに移動

safari dev center

Safari Developer Programに登録

登録についての説明は省略。

safari dev center

既にiOSアプリなど開発している場合はSafari向けのプログラムに申し込むだけで終わります。(無料です。)

初めての方は、新規登録になります。

参考

  • https://developer.apple.com/jp/support/safari/enrollment.html
  • http://d.hatena.ne.jp/kotas/20100608/safariext

証明書の発行

iOS開発者登録などと同様に、キーチェーンアクセスを使って証明書の発行手続きを行います。

まずはMacのキーチェーンアクセスを起動。

「キーチェーンアクセス」→「証明書アシスタント」→「認証局に証明書を要求」を選択。

キーチェーンアクセス

証明書を要求

ユーザーのメールアドレスには開発者登録で指定したApple IDを。通称はなんでもいいです。(たぶん)

証明書を要求

これで「CertificateSigningRequest.certSigningRequest」というファイルを生成できますので、これをSafari Dev Centerにアップロードします。

証明書を発行

スクリーンショット 2013-12-27 9.55.23 スクリーンショット 2013-12-27 9.55.38 スクリーンショット 2013-12-27 10.43.59Choose File… を押して先ほど作成した「CertificateSigningRequest.certSigningRequest」をアップロード。

スクリーンショット 2013-12-27 10.31.03

問題がなければ証明書が発行されます。これをダウンロードすれば、Safariの拡張機能などを自作できるようになります。