【Egret】Androidプロジェクト内の言語間通信
4016 ワード
Androidプロジェクト内の言語間通信
2015-05-27 by city
http://edn.egret.com/cn/index.php?g=&m=article&a=index&id=167&terms1_id=25&terms 2_id=39
前提知識:基本的なEgretプロジェクトの開発経験があり、Android開発環境技術レベル:中級必須製品:Egret Egine 1.7+(ダウンロードアドレス)Egret開発ツール:WebStormまたはVisual Studio+EgretVS(ダウンロードアドレス)Android開発ツール:IntelliJ IDEA
説明
AndroidパッケージEgretプロジェクトでは、AndroidハードウェアボタンMenuを操作するユーザなど、AndroidからEgretにメッセージを送ることが避けられない。逆に、ゲーム中のイベントが発生すると、Androidシステムの機能を起動する必要があります。例えばToastテキストのヒントをポップアップすると、EgretがAndroidにメッセージを送る必要があります。両方の方向の通信は、Egretによって提供される同様のAPIによって行うことができる。また、各通信は同様の方法で起動されますが、この方法は真実な方法ではなく、文字列であり、両方は文字列にマッチすることによってさらに具体的な方法で呼び出されます。
共通の準備
どの方向のメッセージ送信または関数呼び出しにも、Android部分で初期化の動作を行う必要があります。
Android->Egret通信
受信者、Egretコード部分、Egretオフィシャルライブラリは
送信者、すなわちAndroidコード部分においても、準備作業で言及された
Egret->Android通信
受信者、Androidは、フィードバックを受信するために、専用のフィードバックインターフェース
登録コールバック及びコールバック処理のコードは以下の通りです。
送信者は、Egret部分でメッセージを送るのが簡単です。
両方の通信を完全に学ぶために、我々はAndroidアプリを提供し、直感的な方法で両方の方向の機能呼び出しを示し、プロジェクトの完全なソースを提供します。
双方向通信プロジェクトApp双方向通信プロジェクトのソースコード
操作方法:メニューボタンを押すと、Egretビューでテキストメッセージが表示されます。Egretビューの下のテキストを押すと、Androidシステムのヒントが表示されます。
2015-05-27 by city
http://edn.egret.com/cn/index.php?g=&m=article&a=index&id=167&terms1_id=25&terms 2_id=39
前提知識:基本的なEgretプロジェクトの開発経験があり、Android開発環境技術レベル:中級必須製品:Egret Egine 1.7+(ダウンロードアドレス)Egret開発ツール:WebStormまたはVisual Studio+EgretVS(ダウンロードアドレス)Android開発ツール:IntelliJ IDEA
説明
AndroidパッケージEgretプロジェクトでは、AndroidハードウェアボタンMenuを操作するユーザなど、AndroidからEgretにメッセージを送ることが避けられない。逆に、ゲーム中のイベントが発生すると、Androidシステムの機能を起動する必要があります。例えばToastテキストのヒントをポップアップすると、EgretがAndroidにメッセージを送る必要があります。両方の方向の通信は、Egretによって提供される同様のAPIによって行うことができる。また、各通信は同様の方法で起動されますが、この方法は真実な方法ではなく、文字列であり、両方は文字列にマッチすることによってさらに具体的な方法で呼び出されます。
共通の準備
どの方向のメッセージ送信または関数呼び出しにも、Android部分で初期化の動作を行う必要があります。
IGameExternalInterface externalInterface = gameEngine.game_engine_get_externalInterface();externalInterface.run();
第一行のコードが得られたIGameExternalInterface
例は重要であり、本教程で紹介される2つの方向の通信はいずれも使用される。そのうちのgameEngine
はEgret Runtimeの核心的な例であり、固定的なコードで作成されます。具体的な作成過程は教程の最後に添付されたプロジェクトのソースパッケージを参照してください。これらのクラスは、EgretオフィシャルEgret-Android-Support
内のEgretサポートライブラリによって提供される。このセグメントコードは、Androidプロジェクトの主なActivityのonCreate方法において、gameEngine
のインスタンスが初期化された後に置くことを提案する。次に二つの方向の通信について説明します。各方向は先に相手の話をしてから送信者の話をします。Android->Egret通信
受信者、Egretコード部分、Egretオフィシャルライブラリは
ExternalInterface
クラスを提供して通信を処理します。Androidのメソッド呼び出しを受信するために、Egretはコールバック関数を登録する必要があります。このコールバック関数名をegret_dosth
と設定すると、Egret部分のコードは簡単です。/// Android call Egret, receiver with Egretegret.ExternalInterface.addCallback( "egret_dosth", function( msg ){
console.log( "egret_dosth", msg );} );
なお、フィードバックを登録する最初のパラメータは、複数の通信を区別するための文字列であり、通信IDとして理解できる。複数の用途の通信が可能であるため、各用途は、対応またはマッピング関係を通信IDで表す方法と類似している。同じ通信の両方は、同一の通信IDを使用してマッピング関係を接続する必要があります。送信者、すなわちAndroidコード部分においても、準備作業で言及された
IGameExternalInterface
クラスで通信を処理する。私たちはユーザーがMenuにタッチした時にこのコールバックをします。Androidの主なActivityでは、OnKeyDownをカバーする方法にコールコードを追加します。@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_MENU: /// Android call Egret, sender with Android String msg = "Why you touch the menu?!(command from android)"; Log.i( "[proj runner]", "egret_dosth: " + msg ); IGameExternalInterface externalInterface = gameEngine.game_engine_get_externalInterface(); externalInterface.call( "egret_dosth", msg ); return true; default: return super.onKeyDown(keyCode, event);
}}
前述のように、予め定められた通信IDを用いて対応するコールバックを呼び出す。このように、ユーザがアプリケーション内でMenuにタッチすると、msg
メッセージをEgretに送信することができる。Egret->Android通信
受信者、Androidは、フィードバックを受信するために、専用のフィードバックインターフェース
IGameExternalInterfaceCallBack
を実装し、そのcallBack
方法でEgretから送信されたパラメータを受信し、対応する処理を行う必要がある。登録コールバック及びコールバック処理のコードは以下の通りです。
/// Egret call Android, receiver with AndroidIGameExternalInterface externalInterface = gameEngine.game_engine_get_externalInterface();externalInterface.addCallBack("android_dosth", new IGameExternalInterface.IGameExternalInterfaceCallBack() { public void callBack(String str) { Log.i( "[proj runner]", "android_dosth : " + str); }});
上記の通信IDも同様に適用されます。送信者は、Egret部分でメッセージを送るのが簡単です。
/// Egret call Android, sender with Egretvar msg:string = "Why you make me show?!(command from egret)";egret.ExternalInterface.call( "android_dosth", msg );
インスタンスアイテムのダウンロード両方の通信を完全に学ぶために、我々はAndroidアプリを提供し、直感的な方法で両方の方向の機能呼び出しを示し、プロジェクトの完全なソースを提供します。
双方向通信プロジェクトApp双方向通信プロジェクトのソースコード
操作方法:メニューボタンを押すと、Egretビューでテキストメッセージが表示されます。Egretビューの下のテキストを押すと、Androidシステムのヒントが表示されます。