仕事でC++を使うため勉強ついでに何か結果を残せないかと思い、cocos2dxでのandroidアプリの開発をしてみました。
■cocos2dxの開発環境の導入
ぎじゅつめも
開発環境の導入では、上記サイトが非常に参考になりました。
■githubにてソースコードの公開
https://github.com/highcom/test-program.git
上記リンクにてソースコードを公開していますので参考にしてみてください。
■androidアプリ「便利電卓」を公開
便利電卓 by google play
上記リンクにてアプリを公開しています。
cocos2dxの開発環境の導入が完了すれば、ビルドして実行すると画面の表示までいけると思います。以下からは、androidアプリにするために行った設定です。
■マルチディスプレイへの対応
1つの画面サイズを基準としてレイアウトを作成し、それより大きい/小さい画面サイズの場合にはレイアウトを維持したまま拡大/縮小されるようにする設定です。
AppDelegate.cppファイルを以下のように修正します。
画面サイズの基準を480×800としています。
if(!glview)の外側でsetDesignResolutionSize関数を呼び出さないとうまくいきません。
<修正前>
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::create("My Game");
director->setOpenGLView(glview);
}
・・・
↓
<修正後>
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::create("My Game");
}
glview->setDesignResolutionSize(480, 800, ResolutionPolicy::SHOW_ALL);
director->setOpenGLView(glview);
・・・
■バックキーによるアプリの終了
1.ヘッダファイルに以下の関数を定義する。
void onKeyReleased(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event *event);
2.ソースファイルのinit()関数の中に以下のイベントリスナー関数を定義する。
auto keyboardListener = cocos2d::EventListenerKeyboard::create();
keyboardListener->onKeyReleased = CC_CALLBACK_2(CalculationScene::onKeyReleased, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(keyboardListener, this);
3.onKeyReleased()関数でバックキーイベントを取得する。
void CalculationScene::onKeyReleased(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event * event)
{
// バックキーイベント
if (keyCode == EventKeyboard::KeyCode::KEY_ESCAPE)
{
Director::getInstance()->end(); // アプリを終了させる
}
}
■admobの広告表示
Cocos2d-x 3.5 AdMobのバナー広告を実装する(iOS, Android)
上記のサイトが非常に参考になりました。
■admobの追加によるビルドエラーが起きた場合
[Androidアプリ]AdMobでエラーが出てコンパイルが通らない
ビルドターゲットをAPI Level 13以上にすれば良いです。
ちなみに、Android3.1.xのAPI Levelが12以下の端末にはインストールできますが広告は表示されません。
Android3.2のAPI Levelが13以上の端末であれば広告の表示が確認できます。
■apkファイルを作ろうとしたときにエラーが起きた場合
apkファイル作成時に「is not translated in ja」のエラー
google playで公開するために、Export Signed Application Packageを行った際に出ました。
上記サイトにあるように、プロジェクトを右クリック⇒プロパティ⇒Android Lint Preferences⇒MissingTranslationのLintのエラーレベルをWarning以下にしてあげれば良いみたいです。
■cocos2dxの開発環境の導入
ぎじゅつめも
開発環境の導入では、上記サイトが非常に参考になりました。
■githubにてソースコードの公開
https://github.com/highcom/test-program.git
上記リンクにてソースコードを公開していますので参考にしてみてください。
■androidアプリ「便利電卓」を公開
便利電卓 by google play
上記リンクにてアプリを公開しています。
cocos2dxの開発環境の導入が完了すれば、ビルドして実行すると画面の表示までいけると思います。以下からは、androidアプリにするために行った設定です。
■マルチディスプレイへの対応
1つの画面サイズを基準としてレイアウトを作成し、それより大きい/小さい画面サイズの場合にはレイアウトを維持したまま拡大/縮小されるようにする設定です。
AppDelegate.cppファイルを以下のように修正します。
画面サイズの基準を480×800としています。
if(!glview)の外側でsetDesignResolutionSize関数を呼び出さないとうまくいきません。
<修正前>
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::create("My Game");
director->setOpenGLView(glview);
}
・・・
↓
<修正後>
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::create("My Game");
}
glview->setDesignResolutionSize(480, 800, ResolutionPolicy::SHOW_ALL);
director->setOpenGLView(glview);
・・・
■バックキーによるアプリの終了
1.ヘッダファイルに以下の関数を定義する。
void onKeyReleased(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event *event);
2.ソースファイルのinit()関数の中に以下のイベントリスナー関数を定義する。
auto keyboardListener = cocos2d::EventListenerKeyboard::create();
keyboardListener->onKeyReleased = CC_CALLBACK_2(CalculationScene::onKeyReleased, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(keyboardListener, this);
3.onKeyReleased()関数でバックキーイベントを取得する。
void CalculationScene::onKeyReleased(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event * event)
{
// バックキーイベント
if (keyCode == EventKeyboard::KeyCode::KEY_ESCAPE)
{
Director::getInstance()->end(); // アプリを終了させる
}
}
■admobの広告表示
Cocos2d-x 3.5 AdMobのバナー広告を実装する(iOS, Android)
上記のサイトが非常に参考になりました。
■admobの追加によるビルドエラーが起きた場合
[Androidアプリ]AdMobでエラーが出てコンパイルが通らない
ビルドターゲットをAPI Level 13以上にすれば良いです。
ちなみに、Android3.1.xのAPI Levelが12以下の端末にはインストールできますが広告は表示されません。
Android3.2のAPI Levelが13以上の端末であれば広告の表示が確認できます。
■apkファイルを作ろうとしたときにエラーが起きた場合
apkファイル作成時に「is not translated in ja」のエラー
google playで公開するために、Export Signed Application Packageを行った際に出ました。
上記サイトにあるように、プロジェクトを右クリック⇒プロパティ⇒Android Lint Preferences⇒MissingTranslationのLintのエラーレベルをWarning以下にしてあげれば良いみたいです。