Commit 024b29bc authored by rockyl's avatar rockyl

tslib独立出来

增加env
parent c833d73d
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/* global global, define, System, Reflect, Promise */
var __extends;
var __assign;
var __rest;
var __decorate;
var __param;
var __metadata;
var __awaiter;
var __generator;
var __exportStar;
var __values;
var __read;
var __spread;
var __spreadArrays;
var __await;
var __asyncGenerator;
var __asyncDelegator;
var __asyncValues;
var __makeTemplateObject;
var __importStar;
var __importDefault;
(function (factory) {
var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
if (typeof define === "function" && define.amd) {
define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
}
else if (typeof module === "object" && typeof module.exports === "object") {
factory(createExporter(root, createExporter(module.exports)));
}
else {
factory(createExporter(root));
}
function createExporter(exports, previous) {
if (exports !== root) {
if (typeof Object.create === "function") {
Object.defineProperty(exports, "__esModule", { value: true });
}
else {
exports.__esModule = true;
}
}
return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
}
})
(function (exporter) {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
__extends = function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
__assign = Object.assign || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
__rest = function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
__decorate = function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
__param = function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
__metadata = function (metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
};
__awaiter = function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
__generator = function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
__exportStar = function (m, exports) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
};
__values = function (o) {
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
if (m) return m.call(o);
return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
};
__read = function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
__spread = function () {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
};
__spreadArrays = function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
__await = function (v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
};
__asyncGenerator = function (thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
};
__asyncDelegator = function (o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
};
__asyncValues = function (o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
};
__makeTemplateObject = function (cooked, raw) {
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
return cooked;
};
__importStar = function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
__importDefault = function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exporter("__extends", __extends);
exporter("__assign", __assign);
exporter("__rest", __rest);
exporter("__decorate", __decorate);
exporter("__param", __param);
exporter("__metadata", __metadata);
exporter("__awaiter", __awaiter);
exporter("__generator", __generator);
exporter("__exportStar", __exportStar);
exporter("__values", __values);
exporter("__read", __read);
exporter("__spread", __spread);
exporter("__spreadArrays", __spreadArrays);
exporter("__await", __await);
exporter("__asyncGenerator", __asyncGenerator);
exporter("__asyncDelegator", __asyncDelegator);
exporter("__asyncValues", __asyncValues);
exporter("__makeTemplateObject", __makeTemplateObject);
exporter("__importStar", __importStar);
exporter("__importDefault", __importDefault);
});
"use strict";
exports.__esModule = true;
var TouchZoom = (function () {
function TouchZoom() {
this.zoomTo = 1.1;
}
TouchZoom.prototype.mounted = function () {
this.host.anchorX = this.host.width / 2;
this.host.anchorY = this.host.height / 2;
this.host.addEventListener(engine.MouseEvent.MOUSE_DOWN, this._onMouseDown, this);
this.host.addEventListener(engine.MouseEvent.MOUSE_UP, this._onMouseUp, this);
};
TouchZoom.prototype._onMouseDown = function (e) {
this.host.scaleX = this.host.scaleY = this.zoomTo;
};
TouchZoom.prototype._onMouseUp = function (e) {
this.host.scaleX = this.host.scaleY = 1;
};
TouchZoom.id = 'touch-zoom';
return TouchZoom;
}());
exports["default"] = TouchZoom;
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
"types": "index.d.ts", "types": "index.d.ts",
"dependencies": { "dependencies": {
"glob": "^7.1.6", "glob": "^7.1.6",
"rollup-plugin-typescript": "^1.0.1" "rollup-plugin-typescript": "^1.0.1",
"tslib": "^1.10.0"
}, },
"devDependencies": { "devDependencies": {
"dts-bundle": "^0.7.3", "dts-bundle": "^0.7.3",
......
...@@ -27,7 +27,7 @@ export default { ...@@ -27,7 +27,7 @@ export default {
//useTsconfigDeclarationDir: true, //useTsconfigDeclarationDir: true,
}), }),
commonjs(), commonjs(),
//uglify({}), uglify({}),
], ],
onwarn: function(){ onwarn: function(){
......
import { EventDispatcher } from "../events/EventDispatcher"; import {EventDispatcher} from "../events/EventDispatcher";
//import { Parser } from "../svga/parser"; //import { Parser } from "../svga/parser";
//import { VideoEntity } from "../svga/VideoEntity"; //import { VideoEntity } from "../svga/VideoEntity";
import { TextureCache } from "../utils"; import {TextureCache} from "../utils";
import { Texture } from "../texture"; import {Texture} from "../texture";
import {httpRequest} from "../net";
export class Loader extends EventDispatcher { export class Loader extends EventDispatcher {
...@@ -34,7 +35,7 @@ export class Loader extends EventDispatcher { ...@@ -34,7 +35,7 @@ export class Loader extends EventDispatcher {
this.loadImage((suc, data) => { this.loadImage((suc, data) => {
if (suc) { if (suc) {
if (this.caches[url]) { if (this.caches[url]) {
callback(true, { json: this.caches[url], img: data }) callback(true, {json: this.caches[url], img: data})
} }
} else { } else {
callback(false, data) callback(false, data)
...@@ -44,7 +45,7 @@ export class Loader extends EventDispatcher { ...@@ -44,7 +45,7 @@ export class Loader extends EventDispatcher {
this.loadJson((suc, data) => { this.loadJson((suc, data) => {
if (suc) { if (suc) {
if (this.caches[pngFile]) { if (this.caches[pngFile]) {
callback(true, { json: data, img: this.caches[pngFile] }) callback(true, {json: data, img: this.caches[pngFile]})
} }
} else { } else {
callback(false, data) callback(false, data)
...@@ -52,34 +53,13 @@ export class Loader extends EventDispatcher { ...@@ -52,34 +53,13 @@ export class Loader extends EventDispatcher {
}, url) }, url)
} }
httpRequest(callback: Function, url: string, method: string = 'get',type: 'text'|'json' = 'text'){ loadRaw(callback: Function, url: string, type: 'text' | 'json') {
//每次都要new httpRequest((s, p) => {
let _req; if (s) {
if (window["XMLHttpRequest"]) { this.cache(url, p);
_req = new XMLHttpRequest();
} else if (window["ActiveXObject"]) {
_req = new window["ActiveXObject"]();
} else {
alert("请升级至最新版本的浏览器")
}
if (_req != null) {
_req.open("GET", url, true);
_req.responseType = type;
_req.send();
_req.onreadystatechange = () => {
if (_req.readyState == 4 && _req.status == 200) {
this.cache(url, _req.response);
callback(true, _req.response)
}
};
_req.onerror = (reason): void => {
callback(false, reason)
} }
} callback(s, p);
} }, url, 'get', {}, type);
loadRaw(callback: Function, url: string, type: 'text'|'json') {
this.httpRequest(callback, url, 'get', type);
} }
loadJson(callback: Function, url: string) { loadJson(callback: Function, url: string) {
...@@ -92,10 +72,10 @@ export class Loader extends EventDispatcher { ...@@ -92,10 +72,10 @@ export class Loader extends EventDispatcher {
loadTexture(callback: Function, url: string) { loadTexture(callback: Function, url: string) {
this.loadImage((s, payload) => { this.loadImage((s, payload) => {
if (s){ if (s) {
this.cache(url, payload); this.cache(url, payload);
callback(s, TextureCache[url] = Texture.from(payload)); callback(s, TextureCache[url] = Texture.from(payload));
}else{ } else {
callback(s, payload); callback(s, payload);
} }
}, url) }, url)
......
/**
* Created by rockyl on 2019-11-22.
*/
import {obj2query} from "../zeroing/utils";
/**
* http请求
* @param callback
* @param url
* @param method
* @param params
* @param type
*/
export function httpRequest(callback: Function, url: string, method: string = 'get', params?: any, type: 'text' | 'json' | 'jsonp' = 'text') {
if (type === "jsonp") {
jsonp(callback, url, params);
} else {
let _req;
if (window["XMLHttpRequest"]) {
_req = new XMLHttpRequest();
} else if (window["ActiveXObject"]) {
_req = new window["ActiveXObject"]();
} else {
console.log('no xhr');
}
if (_req != null) {
const isGet = method.toUpperCase() === 'GET';
const queryStr = obj2query(params);
if (isGet) {
url = urlJoin(url, queryStr);
}
_req.open(method, url, true);
_req.responseType = type;
if (isGet) {
_req.send();
} else {
_req.send(queryStr);
}
_req.onreadystatechange = () => {
if (_req.readyState == 4 && _req.status == 200) {
callback && callback(true, _req.response)
}
};
_req.onerror = (reason): void => {
callback && callback(false, reason)
}
}
}
}
export function jsonp(callback, url, params) {
const src = urlJoin(url, obj2query(params));
const scriptEl = document.createElement('script');
scriptEl.src = src;
scriptEl.onload = function () {
callback && callback(true);
document.body.removeChild(scriptEl);
};
scriptEl.onerror = function () {
callback && callback(false);
document.body.removeChild(scriptEl);
};
/*const callbackFuncName = '__zeroing_jsonp_callback__' + Math.random();
window[callbackFuncName] = function () {
callback(result);
};*/
document.body.appendChild(scriptEl);
}
export function urlJoin(url, query) {
if (query) {
return url + (url.indexOf('?') < 0 ? '?' : '') + (url[url.length - 1] === '&' ? '' : '&') + query;
} else {
return url;
}
}
...@@ -24,6 +24,7 @@ export * from "./2d/texture"; ...@@ -24,6 +24,7 @@ export * from "./2d/texture";
export * from "./2d/ui"; export * from "./2d/ui";
export * from './2d/tween' export * from './2d/tween'
export * from './2d/net'
export { default as toDisplayDataURL } from "./2d/utils/toDisplayDataURL"; export { default as toDisplayDataURL } from "./2d/utils/toDisplayDataURL";
......
...@@ -25,19 +25,33 @@ export function applyScript(ctor: Function) { ...@@ -25,19 +25,33 @@ export function applyScript(ctor: Function) {
/** /**
* 脚本接口 * 脚本接口
*/ */
export interface IScript { export class ScriptBase {
host: any; private _host: Container;
disabled: boolean; disabled: boolean;
mounted(); get host() {
return this._host
}
mounted() {
}
destroy() {
destroy(); }
update(t: number) {
update(t); }
awake(); awake() {
sleep(); }
sleep() {
}
} }
/** /**
...@@ -83,7 +97,7 @@ export function registerScripts(scripts) { ...@@ -83,7 +97,7 @@ export function registerScripts(scripts) {
*/ */
class ScriptsProxy { class ScriptsProxy {
private _host: Container; private _host: Container;
private _scripts: IScript[] = []; private _scripts: ScriptBase[] = [];
constructor(host) { constructor(host) {
this._host = host; this._host = host;
...@@ -99,15 +113,15 @@ class ScriptsProxy { ...@@ -99,15 +113,15 @@ class ScriptsProxy {
* @param options * @param options
* @param disabled * @param disabled
*/ */
add(name, options, disabled): IScript { add(name, options, disabled): ScriptBase {
let def = scriptDefs[name]; let def = scriptDefs[name];
if (!def) { if (!def) {
console.warn('script def not exists'); console.warn('script def not exists');
return; return;
} }
let script: IScript = new def(); let script: ScriptBase = new def();
script['host'] = this._host; script['_host'] = this._host;
script['_disabled'] = disabled; script['_disabled'] = disabled; //因为在注册的时候,会包装disabled属性
for (let k in options) { for (let k in options) {
script[k] = options[k]; script[k] = options[k];
} }
...@@ -125,7 +139,7 @@ class ScriptsProxy { ...@@ -125,7 +139,7 @@ class ScriptsProxy {
* 移除一个脚本 * 移除一个脚本
* @param index * @param index
*/ */
remove(index): IScript { remove(index): ScriptBase {
let script = this._scripts.splice(index, 1)[0]; let script = this._scripts.splice(index, 1)[0];
if (script) { if (script) {
if (this._host && this._host.stage) { if (this._host && this._host.stage) {
...@@ -139,7 +153,7 @@ class ScriptsProxy { ...@@ -139,7 +153,7 @@ class ScriptsProxy {
/** /**
* 获取所有脚本 * 获取所有脚本
*/ */
get all(): IScript[] { get all(): ScriptBase[] {
return this._scripts; return this._scripts;
} }
...@@ -147,7 +161,7 @@ class ScriptsProxy { ...@@ -147,7 +161,7 @@ class ScriptsProxy {
* 根据名字获取脚本 * 根据名字获取脚本
* @param name * @param name
*/ */
get(name): IScript[] { get(name): ScriptBase[] {
return this._scripts.filter(script => script.constructor['name'] === name); return this._scripts.filter(script => script.constructor['name'] === name);
} }
......
...@@ -11,6 +11,7 @@ import {setProcessMetaLibs} from "../behavior-runtime"; ...@@ -11,6 +11,7 @@ import {setProcessMetaLibs} from "../behavior-runtime";
import {registerScripts} from ".."; import {registerScripts} from "..";
import {Tween} from "../../2d/tween"; import {Tween} from "../../2d/tween";
import {Rect} from "./nodes"; import {Rect} from "./nodes";
import {injectEnv} from "./enviroment";
/** /**
* 游戏舞台 * 游戏舞台
...@@ -96,15 +97,17 @@ export class GameStage extends Container { ...@@ -96,15 +97,17 @@ export class GameStage extends Container {
* 开始游戏 * 开始游戏
*/ */
start() { start() {
const {options, dataMapping, processes, builtinProcesses, scripts} = this._config; const {options: {entrySceneView, env}, dataMapping, processes, builtinProcesses, scripts} = this._config;
Stage.addUpdateObj(Tween); Stage.addUpdateObj(Tween);
injectEnv(env);
registerScripts(scripts); registerScripts(scripts);
this.dataCenter.registerDataMapping(dataMapping); this.dataCenter.registerDataMapping(dataMapping);
setProcessMetaLibs(processes, builtinProcesses); setProcessMetaLibs(processes, builtinProcesses);
const entryViewName = options.entrySceneView;
let entryViewConfig = this.getViewConfigByName(entryViewName); let entryViewConfig = this.getViewConfigByName(entrySceneView);
if (entryViewConfig) { if (entryViewConfig) {
let sceneEntry = instantiate(entryViewConfig); let sceneEntry = instantiate(entryViewConfig);
this._sceneContainer.push(sceneEntry); this._sceneContainer.push(sceneEntry);
...@@ -136,7 +139,7 @@ export class GameStage extends Container { ...@@ -136,7 +139,7 @@ export class GameStage extends Container {
case 'push': case 'push':
case 'replace': case 'replace':
case 'popAll': case 'popAll':
if(options.center){ if (options.center) {
view.horizonCenter = 0; view.horizonCenter = 0;
view.verticalCenter = 0; view.verticalCenter = 0;
} }
......
/**
* Created by rockyl on 2019-11-21.
*/
export let env = {};
export function injectEnv(data){
for(let {name, value} of data){
env[name] = value;
}
}
...@@ -3,3 +3,4 @@ ...@@ -3,3 +3,4 @@
*/ */
export * from './GameStage' export * from './GameStage'
export * from './enviroment'
...@@ -12,7 +12,7 @@ class ShapeBase extends Shape { ...@@ -12,7 +12,7 @@ class ShapeBase extends Shape {
protected __fieldDirty = true; protected __fieldDirty = true;
@dirtyFieldDetector @dirtyFieldDetector
fillColor: any = 0; fillColor: any = 'white';
@dirtyFieldDetector @dirtyFieldDetector
strokeColor: any = 0; strokeColor: any = 0;
@dirtyFieldDetector @dirtyFieldDetector
......
...@@ -56,8 +56,8 @@ function instantiateView(config) { ...@@ -56,8 +56,8 @@ function instantiateView(config) {
} }
function instantiateScript(node, ScriptConfig) { function instantiateScript(node, ScriptConfig) {
const {script: scriptName, properties, disabled} = ScriptConfig; const {script: scriptName, props, disabled} = ScriptConfig;
const script = node.scriptsProxy.add(scriptName, properties, disabled); const script = node.scriptsProxy.add(scriptName, props, disabled);
} }
function injectProperties(target, source) { function injectProperties(target, source) {
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
export * from './launcher' export * from './launcher'
export * from './decorators/scripts' export * from './decorators/scripts'
export * from './decorators/events' export * from './decorators/events'
export * from './utils'
export * from './decorators'
export * from './game-warpper'
import {instantiate} from './game-warpper/view-interpreter' import {instantiate} from './game-warpper/view-interpreter'
export { export {
......
/**
* Created by rockyl on 2019-11-22.
*/
export * from './utils'
...@@ -53,3 +53,78 @@ export function getDataByPath(scope, path, throwException?){ ...@@ -53,3 +53,78 @@ export function getDataByPath(scope, path, throwException?){
} }
} }
} }
/**
* 属性注入方法
* @param target 目标对象
* @param data 被注入对象
* @param callback 自定义注入方法
* @param ignoreMethod 是否忽略方法
* @param ignoreNull 是否忽略Null字段
*
* @return 是否有字段注入
*/
export function injectProp(target: any, data?: any, callback?: Function, ignoreMethod: boolean = true, ignoreNull: boolean = true): boolean {
if (!target || !data) {
return false;
}
let result = false;
for (let key in data) {
let value: any = data[key];
if ((!ignoreMethod || typeof value != 'function') && (!ignoreNull || value != null) && key.indexOf('_') !== 0 && key.indexOf('$') !== 0) {
if (callback) {
callback(target, key, value);
} else {
try {
target[key] = value;
} catch (e) {
}
}
result = true;
}
}
return result;
}
/**
* 属性拷贝
* @param target
* @param data
* @param config
*/
export function copyProp(target, data, config?) {
if (data) {
for (let key in config) {
let valueConfig = config[key];
if (Array.isArray(valueConfig)) {
target[key] = {};
for (let field of valueConfig) {
target[key][field] = data[key][field];
}
} else if (typeof valueConfig === 'string') {
target[valueConfig] = data[valueConfig];
} else if (typeof valueConfig === 'object') {
target[key] = {};
copyProp(target[key], data[key], valueConfig)
}
}
}
}
/**
* 对象转query字符串
* @param obj
*/
export function obj2query(obj: any): string {
if (!obj) {
return '';
}
let arr: string[] = [];
for (let key in obj) {
arr.push(key + '=' + obj[key]);
}
return arr.join('&');
}
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
"sourceMap": true, "sourceMap": true,
"removeComments": true, "removeComments": true,
"noEmitOnError": true, "noEmitOnError": true,
"noEmitHelpers": true,
"declarationDir": "types", "declarationDir": "types",
"declaration": true, "declaration": true,
"experimentalDecorators": true, "experimentalDecorators": true,
......
...@@ -4005,7 +4005,7 @@ ts-loader@^4.0.0: ...@@ -4005,7 +4005,7 @@ ts-loader@^4.0.0:
micromatch "^3.1.4" micromatch "^3.1.4"
semver "^5.0.1" semver "^5.0.1"
tslib@1.10.0, tslib@^1.9.0: tslib@1.10.0, tslib@^1.10.0, tslib@^1.9.0:
version "1.10.0" version "1.10.0"
resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
integrity sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo= integrity sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo=
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment