EgretエンジンとAndroid端末のインタラクション---ホワイトチュートリアル(ピットを含む)

6765 ワード

               ,Egret  。        Html5     ,   js   .ts TypeScrice   。
      ,      ,       Egret     Html5        SDK    。   ,     Html5      apk,    apk      SDK  。
        android   Html5       ,     ,html5 android      js  . android     html5     ,      window     js 。Html5     js    android        ,     。
      Egret        ,             ,                  。
         :Egret Native                    ,            ,       java     ,    ,        android   java     ,        ?
     
           :Egret      。            Egret   IDE    。        :1.       , Egret wind IDE   ts  ,        js,    OC。       ,     ,      。2.        ,          ,          ,         ,         android   。
           : window  Egret     apk.                      。
        
 
  
    
           Egret     html5Demo             ,           android  ,         。
               :1.    :properties.ini  2.     .bat
       
############android    ############
android_proj_name=Fish_Native_2
############android    ############
#1   D:\Html5ToAndroid\egret-android-support-3.0.0
#2   D:\Egret\egret-android-support-2.5.6
android_model=D:\Html5ToAndroid\egret-android-support-3.0.0
@echo off
setlocal enabledelayedexpansion

for /f "delims=" %%a in ('type "properties.ini"^| find /i "="') do (
set %%a
)

cd /d "%~dp0"


@set H5_path=%1
@set Android_path=%cd%\%android_proj_name% 


@echo H5     = %H5_path%
@echo    android     = %Android_path%
@echo     android      = %android_model%

@echo ----------------  android  -----------------------

@call egret create_app %Android_path% -f %H5_path% -t %android_model%


pause 


ステップ3:Egretエンドコードを作成し、Nativeから送信された情報をリスニングし、Nativeエンドに送信します.
         main.ts createGameScene          :
        
  this.setNativeListener();//  android     
        
  this.callAndroid();//  android
       
 private callAndroid():void{
        egret.ExternalInterface.call("callAndroid","i am from Egret");
    }
    
    private setNativeListener(): void{
        egret.ExternalInterface.addCallback("sendToJS",function(message:string){
            console.log("message from Native is = "+message);
            //           main.ts          this.       
            this.showMessage(message);//           
        });
    }
    private showMessage(message:string):void{
        console.log("showMessage-----  message= " + message);
        
    }

最初の穴が開いたを行ないます.
                 ,           callback  。
 private setNativeListener(): void{
        egret.ExternalInterface.addCallback("sendToJS",this.sendToJScallback);
    }
    
    private sendToJScallback(message: string){
        console.log("message from Native is = " + message);
        this.showMessage(message);//      this.         。
    }
    
    private showMessage(message:string):void{
        console.log("showMessage-----  message= " + message);
        
    }

ここにはjsのthisの参照メカニズムが含まれています.よくわかりませんが、このようなやり方が正しいかどうかは分かりません.どうせ正常に動作すればokです.私たちはテストに使うだけです.

       : Egret    Android  。
     Eclipse     ,    activity      。     Egret         , Egret    。
    private void setInterfaces() {
        // Egret(TypeScript)-Runtime(Java)  
        // setRuntimeInterface(String name, IRuntimeInterface interface)       runtime     
        // callEgretInterface(String name, String message)     Egret   ,     
        gameEngine.setRuntimeInterface("sendToNative", new IRuntimeInterface() {
           @Override
            public void callback(String message) {
                Log.d(TAG, message);
                gameEngine.callEgretInterface("sendToJS", "A message from android");
            }
        });
        
        
    }
       :    android  ,  log.


          ,         Egret  Native        ,             。          ,            string    。       json      ,          ,  android       json   , Egret  ?         Json                   。
  
         Egret WebSocket    ,Egret        :JSON.
      JSON               :
    

一つはjson文字列をJSobjectに解析し,一つはJSObjectをjson文字列に変換することである.このapiがあれば、Egret側とAndroid側の通信プロトコルだけを定義します.