Ad
4: 2016-06-25 (土) 17:23:00 njf ソース バックアップ No.4 を復元して編集 5: 2016-06-26 (日) 11:54:13 njf ソース バックアップ No.5 を復元して編集
Line 167: Line 167:
いよいよANEの呼び出し部分を作成します。この部分でエラーが起こるとソースを変更するたびにいちいちANE作り替えなければならずデバッグが面倒なので、できるだけシンプルにするように心がけてください。 いよいよANEの呼び出し部分を作成します。この部分でエラーが起こるとソースを変更するたびにいちいちANE作り替えなければならずデバッグが面倒なので、できるだけシンプルにするように心がけてください。
-(この記事は「[[How to build ANE in Android Studio:http://www.myflashlabs.com/build-ane-android-studio/]] 」を参考にしています) 
まず、FlashRuntimeExtensions.jarをadobe airのSDKの中の「lib/android」の下から見つけておきます。次にAndroid Studioの左のナビゲーションのタブを「Project」に切り替えlibsの下にさきほどの「FlashRuntimeExtensions.jar」をここにコピー&ペーストします。 まず、FlashRuntimeExtensions.jarをadobe airのSDKの中の「lib/android」の下から見つけておきます。次にAndroid Studioの左のナビゲーションのタブを「Project」に切り替えlibsの下にさきほどの「FlashRuntimeExtensions.jar」をここにコピー&ペーストします。
Line 182: Line 181:
うまくいっていればanealertのbuild.gradleのdependenciesに次の1行が加わっているはずです。 うまくいっていればanealertのbuild.gradleのdependenciesに次の1行が加わっているはずです。
- compile files('lib/FlashRuntimeExtensions.jar') 
 + compile files('libs/FlashRuntimeExtensions.jar')
これでANE呼び出しに必要なAPIが使えるようになりました。 これでANE呼び出しに必要なAPIが使えるようになりました。
-作成中+ここで一度ANEからJavaのソースが呼び出される過程を整理しておきます。 
 + 
 ++actionscriptでExtensionContext.createExtensionContextメソッドをIDと初期化変数を引数として呼び出す。 
 ++Java側ではIDに対応するFREExtensionが初期化される。このとき初期化変数も渡される。 
 ++actionscriptでExtensionContextのcallメソッドを関数のIDとともに呼び出す。 
 ++Java側ではその関数のIDに対応するFREFunctionクラスのcallメソッドが呼び出される。 
 + 
 +となります。 
 + 
 +つまりANE呼び出しには二つのクラスが必要です。一つは初期化を行う「FREExtension」を継承したクラスと、もう一つは実際に処理を定義する「FREFunction」を継承したクラスです。 
 + 
 +ではまず、FREExtensionを継承したAneHelloWorldFREExtensionクラスは以下のようになります。 
 + 
 + package njf.jp.anealert; 
 + 
 + import com.adobe.fre.FREContext; 
 + import com.adobe.fre.FREExtension; 
 + import com.adobe.fre.FREFunction; 
 + import java.util.HashMap; 
 + import java.util.Map; 
 + 
 + public class ANEAlertFREExtension implements FREExtension { 
 +     @Override 
 +     public FREContext createContext(String s) { 
 +         FREContext context = new FREContext() { 
 +             @Override 
 +             public Map<String, FREFunction> getFunctions() { 
 +                 Map<String, FREFunction> result = new HashMap<String, FREFunction>(); 
 +                 result.put("alert", new ANEAlertFREFunction()); 
 +                 return result; 
 +             } 
 + 
 +             @Override 
 +             public void dispose() { 
 + 
 +             } 
 +         }; 
 +         return context; 
 +     } 
 + 
 +     @Override 
 +     public void dispose() { } 
 + 
 +     @Override 
 +     public void initialize() { } 
 + } 
 + 
 + 
 +ここで重要なのはresultというHashMapに"alert"という文字列と、次に定義するANEAlertFREFunctionクラスを設定しているところです。このHashMapをFREContextという、ANEのデータを管理するクラスに設定して返してやることで、"alert"という関数IDによってANEAlertFREFunctionクラスのcallメソッドが呼び出されるようになります。 
 + 
 +では最後に実際に呼び出されるクラス、FREFunctionを継承したANEAlertFREFunctionを定義します。 
 + 
 + package njf.jp.anealert; 
 + 
 + import android.app.Activity; 
 + import android.util.Log; 
 + import com.adobe.fre.FREContext; 
 + import com.adobe.fre.FREFunction; 
 + import com.adobe.fre.FREObject; 
 + 
 + public class ANEAlertFREFunction implements FREFunction { 
 +     private ANEAlert aneAlert; 
 + 
 +     @Override 
 +     public FREObject call(FREContext freContext, FREObject[] freObjects) { 
 +         String title = "TITLE"; 
 +         String message = "MESSAGE"; 
 +         try { 
 +             title = freObjects[0].getAsString(); 
 +         } catch (Exception e) { 
 +             Log.e("njf.jp.anealert", "FunctionAdFunction:cant parse arg 1"); 
 +         } 
 +         try { 
 +             title = freObjects[1].getAsString(); 
 +         } catch (Exception e) { 
 +             Log.e("njf.jp.anealert", "FunctionAdFunction:cant parse arg 2"); 
 +         } 
 +         if(aneAlert == null){ 
 +             aneAlert = new ANEAlert(freContext.getActivity()); 
 +         } 
 +         aneAlert.showAlert(title,message); 
 +         return null; 
 +     } 
 + } 
 + 
 +ここでcallメソッドが実際に呼び出されるメソッド、その引数であるFREContextにはアクテビティの情報など、FREObjectには呼び出しの時の引数が入っています。
*jarファイルの取り出し [#veeed4bc] *jarファイルの取り出し [#veeed4bc]
 +(この記事は「[[How to build ANE in Android Studio:http://www.myflashlabs.com/build-ane-android-studio/]] 」を参考にしています)
 +
 +ここまでくるとANEに必要なjarファイルを作成するのは簡単です。


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 3279, today: 1, yesterday: 0
MenuBar
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失

Portuguese | English | German | Greek | Japanese | Korean | Russian | T-Chinese top
NJF