[Cocos Creator] 加載遠程代碼

// 加載代碼
let url = "http://遠程域名或ip地址/路徑/TestRemote.js";
cc.loader.load(url, (err, res) => {
    if (err) {
        console.error(err);
    } else {
        // 1. 普通函數可以直接調用
        Print("Hello World");

        // 2. 繼承cc.Component的類
        let clsName = "TestRemote";// 自己定義,需要和TestRemote.js文件中類名一致
        let cls = cc.js.getClassByName(clsName);
        if (!cls) {
            let remoteCls: any = window[clsName];
            if (window.__modular) {
                // preview
                window.__modular.modules[clsName] = {
                    file: clsName
                };
                window.__modular.nameMap[clsName] = clsName;
            }
            if (window.__require) {
                // build
            }
            let o = function (r) {
                var u = {
                    exports: {}
                };
                remoteCls[0].call(u.exports, function (t) {
                    return o(remoteCls[1][t] || t)
                }, u, u.exports);
                return u.exports
            }
            o(clsName);
        }
        let node = new cc.Node();
        node.parent = this.node;
        node.setPosition(0, 100);
        let com = node.addComponent("TestRemote");
        let labelNode = new cc.Node();
        labelNode.parent = node;
        com.label = labelNode.addComponent(cc.Label);
        com.setLabel("Hahaha");

        console.log('done');
    }
});
// 遠程代碼: 下面3種任選一種
// 1.普通js代碼
function Print(msg) {
    console.log('Print', msg);
}
// =====================================================
// 2.cocos creator 繼承cc.Component的js類編譯後版本:
// build版本之後獲取到的,"37c8fTvEXFFTJXIilra/hLt"爲隨機生成的uuid,由編輯器生成
var TestRemote = [function (t, e, i) {
    "use strict";
    cc._RF.push(e, "37c8fTvEXFFTJXIilra/hLt", "TestRemote", "TestRemote");
    cc.Class({
        extends: cc.Component,
        properties: {
            label: cc.Label
        },
        start: function () { },
        setLabel: function (t) {
            this.label.string = t
        }
    });
    cc._RF.pop()
}, {}]
// =====================================================
// 2.cocos creator 繼承cc.Component的ts類編譯後版本:
// build版本之後獲取到的,"19b791y98xIZLnToPi/DNyb"爲隨機生成的uuid,由編輯器生成
var TestRemote = [function(t, e, i) {
    "use strict";
    cc._RF.push(e, "19b791y98xIZLnToPi/DNyb", "TestRemote", "TestRemote");
    var n = this && this.__extends || function() {
        var t = function(e, i) {
            return (t = Object.setPrototypeOf || {
                __proto__: []
            }instanceof Array && function(t, e) {
                t.__proto__ = e
            }
            || function(t, e) {
                for (var i in e)
                    e.hasOwnProperty(i) && (t[i] = e[i])
            }
            )(e, i)
        };
        return function(e, i) {
            function n() {
                this.constructor = e
            }
            t(e, i),
            e.prototype = null === i ? Object.create(i) : (n.prototype = i.prototype,
            new n)
        }
    }()
      , o = this && this.__decorate || function(t, e, i, n) {
        var o, s = arguments.length, r = s < 3 ? e : null === n ? n = Object.getOwnPropertyDescriptor(e, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate)
            r = Reflect.decorate(t, e, i, n);
        else
            for (var a = t.length - 1; a >= 0; a--)
                (o = t[a]) && (r = (s < 3 ? o(r) : s > 3 ? o(e, i, r) : o(e, i)) || r);
        return s > 3 && r && Object.defineProperty(e, i, r),
        r
    }
    ;
    Object.defineProperty(i, "__esModule", {
        value: !0
    });
    var s = cc._decorator
      , r = s.ccclass
      , a = s.property
      , c = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.label = null,
            e
        }
        return n(e, t),
        e.prototype.onLoad = function() {}
        ,
        e.prototype.start = function() {}
        ,
        e.prototype.setLabel = function(t) {
            this.label.string = t
        }
        ,
        o([a(cc.Label)], e.prototype, "label", void 0),
        e = o([r], e)
    }(cc.Component);
    i.TestRemote = c,
    cc._RF.pop()
}
, {}]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章