1. 程式人生 > >LayaAir之小遊戲開放域開發

LayaAir之小遊戲開放域開發

userinfo 方式 require WebG ide pri 其中 fff 打包

版本 : LayaAir2.0.0bate4

一 : 認識類 : Laya.WXOpenDataViewer , 顧名思義:此類封裝了開放域(子域)的畫布功能.這樣的話就不需要程序員自己去寫畫布功能了. 其用法主要如下:

①:在UI編輯其中 , 使用此組件(可設置寬高,坐標等等)
技術分享圖片
②:可以在代碼中new,再設置寬高,坐標等,代碼片段(偽代碼)如下

private _my_open : Laya.WXOpenDataViewer = null;
        this._my_open = new Laya.WXOpenDataViewer();
        this.width = this._my_open.width = 255;
        this.height = this._my_open.height = 236;
        this.addChild( this._my_open );

二:在主域顯示開放域(子域)的畫布信息

Ⅰ,主域發送信息
①,發送信息是用Laya.WXOpenDataViewer類的postMsg進行發送的.其實它封裝了wx.postMessage方法.實例如下:

this._my_open.postMsg({ type : "ResultPhoto" , myOpen : WC_UserInfo_VO.Instance.OpenId , myDistance : $distance} );

Ⅱ,子域接收信息
②,註意,子域接收消息最好在Main(或其他管理類)初始化的時候做一個消息的分發.因為,你不能只接收一條主域信息:

constructor() {
        //根據IDE設置初始化引擎      
        Laya.init(GameConfig.width, GameConfig.height );
        Laya.stage.scaleMode = GameConfig.scaleMode;
        Laya.stage.screenMode = GameConfig.screenMode;
        Laya.stage.alignV = GameConfig.alignV;
        Laya.stage.alignH = GameConfig.alignH;

        this.onConfigLoaded();
    }

    private  onConfigLoaded(): void {
        //加載IDE指定的場景
        this._wx = Laya.Browser.window.wx;
        if( this._wx ){
            //接受來自主域的信息
            this._wx.onMessage(function(message):void{
                this.recevieData(message);
            }.bind(this));
        }
    }

三 : 補充註意點(小遊戲項目)

Ⅰ,主域部分
① , 在game.json中加入"openDataContext": "./openDataContext" , 如下:
技術分享圖片

Ⅱ,子域部分
① , 子域工程以小遊戲方式打包
② , 子域資源結構如下:
技術分享圖片
③ , index.js 加入引入的項目 , 不要加入webgl等庫
手動加入部分類庫:

require("weapp-adapter.js");
require("libs/laya.wxmini.js");
window.loadLib = require;

技術分享圖片

四 : 結果

技術分享圖片

OK , 本篇基本到此結束............

LayaAir之小遊戲開放域開發