vlambda博客
学习文章列表

Cocos组件09-WebView组件:网页显示组件

WebView 组件是用来显示网页的组件。可用使用该组件让项目集成浏览器,使浏览器显示在项目中,选中节点,在属性检查器面板中添加该组件,将WebView组件添加到选中的节点上,可以在属性检查器面板中查看该组件的属性,如下图所示:

WebView组件的属性如下表所示

属性 说明
Url 指定一个URL,该地址以HTTP或HTTPS开头,填写一个有效的URL网址
WebView Events WebView组件的回调事件,加载网页结束或出错时会调用此函数

WebView 事件如表所示:

属性 说明
Target 没有脚本组件的节点
Component 脚本组件名称
Handler 指定一个回调函数,在网页加载过程中、加载完毕或加载出错时调用,该函数会传一个事件类型参数
CustomEventData 用户指定任意字符串作为事件回调的最后一个参数

WebView 事件回调参数

名称 说明
LOADING 网页正在加载过程中
LOADED 网页已经加载完毕
ERROR 网页加载出错

通过脚本代码添加回调方法如下:

1) 构造 cc.Component.EventHandler对象,并设置参数:

// 使用此方法添加的事件回调和使用编辑器添加的事件回调是一样的
cc.Class({
    name'cc.MyComponent',
    extends: cc.Component,
    // 声明
    properties: {
        webview: cc.WebView
    },
    // 初始化
    onLoad () {
        // 构造一个 cc.Component.EventHandler对象
        let webviewEventHandler = new cc.Component.EventHandler();
        // 设置参数
        webviewEventHandler.target = this.node;
        // 脚本组件名称
        webviewEventHandler.component = "cc.MyComponent";
        // 回调函数
        webviewEventHandler.handler = "callback";
        // 回调函数参数
        webviewEventHandler.customEventData = "foobar";
        this.webview.webviewEvents.push(webviewEventHandler);
    },
    // 注意:参数的顺序和类型是固定的
    callbackfunction (webview, eventType, customData{
        // 这里的 webview 是一个 WebView 组件对象实例
        // 这里的 eventType 是 cc.WebView.EventType enum 里面的值
        // 这里的 customEventData 参数就是之前设置的 "foobar"
    }
});

2) 通过注册事件添加回调:

// 通过 webview.node.on('loaded', ...) 方式添加回调
// 假设在一个组件的 onLoad 方法里面添加事件处理回调,在 callback 函数中进行事件处理
cc.Class({
    extends: cc.Component,
    // 声明
    properties: {
        webview: cc.WebView
    },
    // 初始化
    onLoad () {
        // 注册loaded
        this.webview.node.on('loaded'this.callback, this);
    },
    // 方法回调
    callbackfunction (event{
        // 这里的 event 是一个 EventCustom 对象,可以通过 event.detail 获取
        // WebView 组件
        let webview = event.detail;
        // do whatever you want with webview
        // 使用这种方式注册的事件也无法传递 customEventData
    }
});

同理,也可以注册 loading error 等事件,这些事件的回调函数的参数同 loaded 的参数相同!