LayaAir在微信小游戏开放数据域开发中遇到的问题总结

用LayaAir可以非常方便的开发微信小游戏。但是微信为了防止开发者收集玩家的好友信息,搞了一个开放数据域OpenDataContext来提供有限制的好友功能。 可以把微信的开放数据域理解成一个阉割的程序环境,在域中开发者不能调用文件系统的功能,没有联网功能。只能通过微信提供的相关API来获取好友数据,然后绘制到一张shardeCanvas上, 主域通过这个共享画布来展示玩家的好友信息。

微信好友关系链的介绍:https://developers.weixin.qq.com/minigame/dev/tutorial/open-ability/open-data.html

LayaAir开发好友链的方式: https://ask.layabox.com/question/15086

用LayaAir开发好友、排行榜功能时,有很多坑需要注意。

1. 子域无法显示主域里的图集资源。     

    主域和子域都需要加载该图集才能正常显示。监听主域发来的消息,当主域加载图集时,会发送一个message.isLoad='filedata'的消息,只有执行了MiniFileMgr.ziyuFileData[message.url] = message.data;这行代码,子域才能正确显示图片。(写监听代码时,务必写正确, filedata 都是小写,我就因为有个字母大写了,造成没进判断。半天显示不出来图)

if(MiniAdpter.isZiYu && MiniAdpter.isPosMsgYu)
		{
			__JS__('wx').onMessage(function(message:Object):void{
				trace(message);
				if(message['isLoad'] == "filedata")
				{
					MiniFileMgr.ziyuFileData[message.url] = message.data;//文本数据
				}

2. 在子域里使用List组件的滚动功能时,会报错。  我们一把设置List的vScrollBarSkin,或hScrollBarSkin 为''",  来让list可以滚动,但是在子域里要报错。    是因为我的LayaAir引擎比较老(1.17版),  需要在子域的Image类里,改点代码:

public function set skin( value:String):void

{

    if( value=="''" || value == '""')

    {

        this.source = null;

        return;

    }

3. 子域 bitmap._addReference() 报错,  也是因为版本太老, 需要更新到最新引擎。  或则自己手动加个判断, 判下bitmap._addReference是否为null

4. 子域里 鼠标响应偏移,不能点中按钮。  我们一般是把子域显示在一个sprite容器上,但是子域的坐标系统也是从屏幕左上角开始算的。  需要重新new一个Matrix,重新设置子域的 Laya.stage._canvasTransform

猜你喜欢

转载自blog.csdn.net/tianhai110/article/details/82693637