2015年7月15日水曜日

[Cocos2d-x]アクション終了時に処理を実行する

Cocos2d-x v3.6

auto mySprite = Sprite::create();
auto action = FadeOut::create(0.1);
mySprite->runAction(action);
// ラムダ式でコールバックを設定する
auto callback = CallFuncN::create([](Ref *sender){
  //コールバック処理をここに書く
  Node *node = (Node *)sender;
  node->removeFromParent();
});
// アクションとコールバックをシーケンスに設定する
auto seq = Sequence::create(action, callback, NULL);
mySprite->runAction(seq);

2015年7月14日火曜日

[Admob]テストIDについて

Admobは開発時ににはテスト広告が使用が推奨されている、
このテスト広告を使用するためにはtestDvicesの配列にD端末IDを追加すれば良い。
DeviecIDはAdmob固有のものでiPhone UIDなどとは別物である。
端末がiOSシュミレーター、Androidエミュレターの場合はGAD_SIMULATOR_IDを使用する。

端末IDをを知るには[GADRequest request]時に出力されるログに表示される
To get test ads on this device, call: request.testDevices = @[
@”ここに端末IDが表示される” ];

このためテスト端末を利用するときははじめの1回は本番環境として起動する必要がある。

ちょっと考えればあたりまえだが、
https://developers.google.com/mobile-ads-sdk/docs/admob/ios/targeting?hl=ja#test_ads

開発段階では、表示回数が不正にカウントされないよう、テスト広告を使用することをおすすめします。

と記載されていたので、はじめの1回が不正になるのじゃないかと考えていたため、
本番環境での起動に躊躇してしまった。
AdmobさんはGoogleIDを結構警告(とBAN)すると聞いたので

2015年7月13日月曜日

[Cocos2d-x]Actionを連続させて行う

spriteを順番にactionさせる

auto downAction = MoveBy::create(0.5, Point(0, 30));
auto upActiopn = MoveBy::create(0.5, Point(0, -30));
//Spawnは2つのアクションを制御することができる、3つ以上はSequeneにすること
auto upDownAction = Spawn::create(downAction, upActiopn, NULL);
sprite->runAction(upDownAction);

spriteを順番にactionさせ、ループさせる

auto downAction = MoveBy::create(0.5, Point(0, 30));
auto upActiopn = MoveBy::create(0.5, Point(0, -30));
//Sequenceは複数のアクションを順番に行うことができる
auto sequence = Sequence::create(downAction, upActiopn, NULL);
auto repeatForever = RepeatForever::create(sequence);
sprite->runAction(repeatForever);

2015年5月27日水曜日

[Cocos2d]Cocos2dをちょっとやってみた感想

開発環境はmac mini 2014、Core i5 2.5G、メモリー 8G
  • Cocos2d-x 3.6
    C++またはLua
    iOS、Android、Windows Phone 8に書き出し可能
    LuaならCococsが用意したEclipseベースのCode IDEが使用できる
  • Cocos2d-JS 3.6.1
    Javascript
    iOS、Android、Web(WebGL)に書き出し可能
    Cococsが用意したEclipseベースのCode IDEが使用できる
  • Code IDE v1.2
    Lua、JavaScriptでCocos2dを使用するときに使えるIDE基本的な機能は入っている
  • Cocos v2.2
    UIエディターやアニメーションエディター、プラットフォームのダウンロード機能などが含まれたCococsの補助ツール
    今のところイマイチ

複数のデバイスサイズに対応させるにはややコーディングが必要

Cocos2dには種類が大量にあるが、プラットフォームが多くリリースされた理由はこちらのサイトを見れば分かる

miyahiraブログ - cocos2dの歴史をまとめてみた。
http://blog.miyahira.me/2014/11/cocos2dcocos2d-x-cocos2d-iphone-
cocos2d.html

Cocos2d-Xを触ってみた感想

・初回ビルドに時間がかかる(Xcode C++ シミュレーターだと2回目以降は5~15秒程度)
・Xcodeが使える
・iOS+Xcodeでシミュレータの立ち上げに失敗することがある(これはNative Xcode開発でも同じか?)
・サンプルが多い特にLuaだと中華系サイトに大量にある

Cocos2d-x v3 C++ Tutorial Series
https://www.youtube.com/playlist?list=PLRtjMdoYXLf4od_bOKN3WjAPr7snPXzoe
動画数53本とかなり多いがこれを全部みれば基本が分かる
youtubeの説明のリンクからGithubのコードが見れる

Cocos2d-JSを触ってみた感想

・JavaScriptなので習得が用意
・Webだとファイルを保存するだけで実行可能で、トライ&エラー手法で短期間に色々試せる
・iOS、Androidへのビルドは非常に長い、初回の空プロジェクトでも3~5分はかかる
・v2.xとv3.xだと挙動や呼び出しが違うので注意する必要がある
・v3.xのサンプルや情報が少ない
・公式のリファレンスやガイドだけでは作りにくい

Cocos2dの別プラットフォームをやっている人ならすんなり入れると思うが、
いきなりやるにはちょっと情報が少なすぎる

参考にしたサイト

公式リファレンス
http://www.cocos2d-x.org/reference/html5-js/V3.6/index.html

公式サンプル
http://cocos2d-x.org/js-tests/
v2.xのサンプルが混ざっているので注意

Cocos2d-js(v3系)のチュートリアルまとめ
http://qiita.com/hp0me/items/55b784e9c616c52cab43

JavaScript の超便利なメソッド bind で this を制御する
http://foreignkey.jp/archives/763
.bind(this)について
JavaScriptのthisはObjective-CやJavaとは違った動きをすることがあるので
thisの扱いは覚えておいた方がいい

2015年4月20日月曜日

[iOS]iTunes Store operation failed "You are not authorized to use this service"

App Storeへアプリを販売可能にするため、XcodeからOganaizerを使用してアプリをアップロードしたところ以下のエラーが発生した。

iTunes Store operation failed
You are not authorized to use this service
(あなたはこのサービスを使用する許可が無い)

stackoverflowによると

http://stackoverflow.com/questions/28248496/you-are-not-authorised-to-use-this-service-itunes-app-upload-error

解決法:XcodeのiOS Developerのアカウントをリログする

http://stackoverflow.com/questions/28553827/itunes-store-operation-failed-you-are-not-authoried-to-use-this-service

Appleのサービスがで問題が発生しているのでアップロードできない


2つの回答があったが、どちらにも該当しなかった。
解決方法は「iTunes ConnectとiOS Developerのアカウントは同じアカウントを使用する」だった。

というのもiOS3.xのころはiTunes ConnectとiOS Developerは別々のアカウントを作る必要があったが、iOS8(Xcode6)ぐらいから別々のアカウントではアプリのアップロードができなくなったっぽい。

Application Loader 2.9.1を使用すれば別々のアカウントでもできるが
Application Loader 2.9.1の使用は推奨されてないので別の問題が発生する可能性がある
https://itunesconnect.apple.com/apploader/ApplicationLoader_2.9.1.dmg