当前位置: 首页 > news >正文

外贸手机网站建设浙江网站建设推广

外贸手机网站建设,浙江网站建设推广,网站建设:成都今网科技,如何外贸网站推广当前需求是在原有的cocos手机游戏里嵌入另一个cocos的web-mobile项目 所以需要使用webview 记录一下 首先就是要有一个webview组件 接下来是脚本 (外部项目) export class GameWebview extends Component {property(WebView)webview: WebView null!;…

当前需求是在原有的cocos手机游戏里嵌入另一个cocos的web-mobile项目
所以需要使用webview
记录一下

首先就是要有一个webview组件
在这里插入图片描述
接下来是脚本
(外部项目)

export class GameWebview extends Component {@property(WebView)webview: WebView = null!;onAdded(params: any) {// webview跳转 并向内部发送tokenlet token = params.access_token;this.webview.url = `${params.host}?token=${token}`;// webview加载完成监听this.webview.node.on(WebView.EventType.LOADED, ()=> {// 约定的关键字let scheme = "closepage";// 设置关键字this.webview.setJavascriptInterfaceScheme(scheme);// 识别到URL前缀为关键字的回调this.webview.setOnJSCallback(()=>{this.close();})// 关闭背景音乐oops.audio.stopMusic();// 原本是想用这种方式发送token的,但是没有获取的时机// this.scheduleOnce(()=> {//     this.webview.evaluateJS(`setToken(${JSON.stringify(token)})`);// }, 8)})}close() {// 打开背景音乐let bgm = oops.storage.get("game_audio");oops.audio.playMusicLoop(bgm);oops.gui.remove(UIID.HitMoleGameWebview);}
}

(内部项目)
在Main.ts即项目开始时获取token

const token = urlParams.get("token");
oops.storage.set("token", token);

返回到外部游戏

close() {SocketManager.getInstance().close();// 跳转以关键字为前缀的URL,让外部webview识别document.location = 'closepage://a=1';oops.gui.remove(UIID.Home);
}

一些遇到的问题及解决

传递token

一开始我是想通过👇这种方式转递token
记得要stringify一下

this.webview.evaluateJS(`setToken(${JSON.stringify(token)})`);

获取的话就要通过声明全局方法setToken来接收
但找不到合适的时机
我已经在首场景下挂载的脚本(Main.ts)里声明了,但是还是接收不到,会报错找不到该方法(难道要改构建后的文件?)
然后我又尝试了在加载完成监听里发送token,还是同样不行

this.webview.node.on(WebView.EventType.LOADED, ()=> {this.webview.evaluateJS(`setToken(${JSON.stringify(token)})`);
})

再然后又加了个延时,倒是可以了,但是不是很稳定

this.webview.node.on(WebView.EventType.LOADED, ()=> {this.scheduleOnce(()=> {this.webview.evaluateJS(`setToken(${JSON.stringify(token)})`);}, 8)
})

最后就直接用url来传了

this.webview.url = `${params.host}?token=${token}`;

接收

const urlParams = new URLSearchParams(window.location.search);
const token = urlParams.get("token");

内部向外部传递消息

一开始我是这么设置关键字的

let scheme = "closepage";
this.webview.setJavascriptInterfaceScheme(scheme);
this.webview.setOnJSCallback(()=>{this.close();
})
let token = params.access_token;
this.webview.url = `${params.host}?token=${token}`;

看了半天,并没有啥问题啊,就是识别不了关键字
看了这篇帖子
应该是要先打开webview的内部项目,激活,再去设置关键字,为了保险我是在loaded里设置的关键字

this.webview.node.on(WebView.EventType.LOADED, ()=> {// 约定的关键字let scheme = "closepage";// 设置关键字this.webview.setJavascriptInterfaceScheme(scheme);// 识别到URL前缀为关键字的回调this.webview.setOnJSCallback(()=>{this.close();})
})

还有注意关键字不能有大写字母!!

web-mobile打包问题

打包时要注意,记得勾选上MD5,这样重新上传新包后就不用清缓存才能加载新包内容了
在这里插入图片描述

细节问题

  • 记得跳转时要记得关闭原bgm,返回时重新播放bgm
  • 如果内部项目是用的浏览器预览,可以选择”网页全屏“
    在这里插入图片描述
http://www.dtcms.com/a/420949.html

相关文章:

  • 建网站网wordpress正则
  • 邢台手机网站建设费用网站推广上首页
  • 网站开发背景策划书事业单位备案网站
  • 深圳网络提速优化服务包深圳网站优化公司哪家好
  • VisualMimic——基于视觉的人形行走-操作控制:低层策略负责平衡控制且跟踪高层下发的指令、高层策略则基于自我中心视觉输入生成任务跟踪指令
  • 哪里可以做营销型网站linux apache发布php网站
  • 贵州网站建设营销公司哪家好湛江网站建设运营方案
  • 做网站员培训凡科互动小游戏
  • 网站建设毕业答辩ppt百度注册新账号
  • 上海做网站制作建筑工程网名大全霸气
  • 销售单页网站欧美风格英文网站设计
  • 【开题答辩全过程】以 基于Java的闲置物品租赁平台为例,包含答辩的问题和答案
  • 网站设计有什么前景网店如何推广自己的产品
  • 推广网站的方法有搜索引擎内容营销的重要性
  • 【Linux】基础指令
  • 阿里网站官网入口wordpress更改密码
  • 做看电视电影的网站赚钱东莞网络公司网络推广
  • 南宁门户网站建设网站开发企业
  • 红安建设局网站网站建设需要多少钱知乎
  • 学院网站建设需求说明书网址域名查询
  • 网站建设首页该放什么软件wordpress如何添加安装导航
  • 电子产品首页网站版模网站建设 紧急检查工作
  • 盐城市城乡建设门户网站seo推广业务员招聘
  • dede网站微信分享封面设计制作网站制作
  • 永州市建设工程质量安全监督站官方网站重庆渝北网站建设
  • 长沙低价网站建设网站一般用什么服务器
  • isSuperclassOf 与is 与 ==的区别
  • 大英网站建设工作网站建设方案确认表
  • 网站制作的公司哪个好广州网站制作设计公司
  • 攻防世界-Web-unserialize3