Commit f987a9a6 authored by rockyl's avatar rockyl

修改代理

parent 8b44bc20
......@@ -1686,52 +1686,73 @@
return MouseEvent;
}(Event));
var AdjustData = (function () {
function AdjustData() {
this.percentWidth = NaN;
this.percentHeight = NaN;
this.left = NaN;
this.top = NaN;
this.right = NaN;
this.bottom = NaN;
this.horizonCenter = NaN;
this.verticalCenter = NaN;
}
return AdjustData;
}());
function t(v) {
return !isNaN(v) && v !== null && v !== undefined;
}
function applyAutoAdjust(ctor) {
ctor.prototype.applyAutoAdjust = function () {
var adjustData = new AdjustData();
this.__sizeDirty = true;
this.adjustData = adjustData;
this.addEventListener(Event.ADDED_TO_STAGE, this.__onAddedToStageAA, this);
this.addEventListener(Event.REMOVED_FROM_STAGE, this.__onRemovedFromStageAA, this);
};
ctor.prototype.__onAddedToStageAA = function () {
this.parent.addEventListener(Event.RESIZE, this.__onResizeAA, this);
this.addEventListener(Event.ENTER_FRAME, this.__onEnterFrameAA, this);
};
ctor.prototype.__onRemovedFromStageAA = function () {
this.parent.removeEventListener(Event.RESIZE, this.__onResizeAA);
this.removeEventListener(Event.ENTER_FRAME, this.__onEnterFrameAA);
};
ctor.prototype.__onResizeAA = function () {
this.__sizeDirty = true;
};
ctor.prototype.__onEnterFrameAA = function () {
if (this.__sizeDirty) {
this.__sizeDirty = false;
var adjustProxy = this.adjustProxy = new AdjustProxy(this);
this.addEventListener(Event.ADDED_TO_STAGE, adjustProxy.onAddedToStage, adjustProxy);
this.addEventListener(Event.REMOVED_FROM_STAGE, adjustProxy.onRemovedFromStage, adjustProxy);
};
var temp = new AdjustProxy(null);
var _loop_1 = function (key) {
Object.defineProperty(ctor.prototype, key, {
get: function () {
return this.adjustProxy.data[key];
},
set: function (v) {
var adjustProxy = this.adjustProxy;
if (adjustProxy.data[key] !== v) {
adjustProxy.data[key] = v;
adjustProxy.makeDirty();
}
},
enumerable: true,
configurable: true
});
};
for (var key in temp.data) {
_loop_1(key);
}
}
var AdjustProxy = (function () {
function AdjustProxy(host) {
this.data = {
percentWidth: NaN,
percentHeight: NaN,
left: NaN,
top: NaN,
right: NaN,
bottom: NaN,
horizonCenter: NaN,
verticalCenter: NaN,
};
this._host = host;
this.makeDirty();
}
AdjustProxy.prototype.makeDirty = function () {
this._sizeDirty = true;
};
AdjustProxy.prototype.onAddedToStage = function (e) {
this._host.parent.addEventListener(Event.RESIZE, this.onResize, this);
this._host.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, this);
};
AdjustProxy.prototype.onRemovedFromStage = function (e) {
this._host.parent.removeEventListener(Event.RESIZE, this.onResize);
this._host.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame);
};
AdjustProxy.prototype.onResize = function (e) {
this._sizeDirty = true;
};
AdjustProxy.prototype.onEnterFrame = function (e) {
if (this._sizeDirty) {
this._sizeDirty = false;
this.adjustLayout();
}
};
ctor.prototype.adjustLayout = function () {
var that = this;
var _a = this.parent, pWidth = _a.width, pHeight = _a.height;
var _b = this, width = _b.width, height = _b.height;
var _c = this.adjustData, percentWidth = _c.percentWidth, percentHeight = _c.percentHeight, left = _c.left, top = _c.top, right = _c.right, bottom = _c.bottom, horizonCenter = _c.horizonCenter, verticalCenter = _c.verticalCenter;
AdjustProxy.prototype.adjustLayout = function () {
var that = this._host;
var _a = that.parent, pWidth = _a.width, pHeight = _a.height;
var width = that.width, height = that.height;
var _b = this.data, percentWidth = _b.percentWidth, percentHeight = _b.percentHeight, left = _b.left, top = _b.top, right = _b.right, bottom = _b.bottom, horizonCenter = _b.horizonCenter, verticalCenter = _b.verticalCenter;
var applyPercentWidth = function () {
if (t(percentWidth)) {
that.width = pWidth * percentWidth / 100;
......@@ -1745,18 +1766,18 @@
var pw = true, ph = true;
if (t(horizonCenter)) {
applyPercentWidth();
this.x = (pWidth - this.width) / 2 + horizonCenter;
that.x = (pWidth - that.width) / 2 + horizonCenter;
}
else {
if (t(left)) {
this.x = left;
that.x = left;
if (t(right)) {
this.width = pWidth - left - right;
that.width = pWidth - left - right;
pw = false;
}
}
else if (t(right)) {
this.x = pWidth - width - right;
that.x = pWidth - width - right;
}
if (pw) {
applyPercentWidth();
......@@ -1764,60 +1785,37 @@
}
if (t(verticalCenter)) {
applyPercentHeight();
this.y = (pHeight - this.height) / 2 + verticalCenter;
that.y = (pHeight - that.height) / 2 + verticalCenter;
}
else {
if (t(top)) {
this.y = top;
that.y = top;
if (t(bottom)) {
this.height = pHeight - top - bottom;
that.height = pHeight - top - bottom;
ph = false;
}
}
else if (t(bottom)) {
this.y = pHeight - height - bottom;
that.y = pHeight - height - bottom;
}
if (ph) {
applyPercentHeight();
}
}
};
var _loop_1 = function (key) {
Object.defineProperty(ctor.prototype, key, {
get: function () {
return this.adjustData[key];
},
set: function (v) {
if (this.adjustData[key] !== v) {
this.adjustData[key] = v;
this.__sizeDirty = true;
}
},
enumerable: true,
configurable: true
});
};
for (var key in new AdjustData()) {
_loop_1(key);
}
return AdjustProxy;
}());
function t(v) {
return !isNaN(v) && v !== null && v !== undefined;
}
var scriptDefs = {};
function applyScript(ctor) {
ctor.prototype.applyScripts = function () {
this.scripts = new ScriptsContainer(this);
this.addEventListener(Event.ENTER_FRAME, this.__onEnterFrameS, this);
this.addEventListener(Event.ADDED_TO_STAGE, this.__onAddedToStageS, this);
this.addEventListener(Event.REMOVED_FROM_STAGE, this.__onRemovedFromStageS, this);
};
ctor.prototype.__onEnterFrameS = function (e) {
this.scripts.update(e.data);
};
ctor.prototype.__onAddedToStageS = function (e) {
this.scripts.awake();
};
ctor.prototype.__onRemovedFromStageS = function (e) {
this.scripts.sleep();
var scriptsProxy = this.scriptsProxy = new ScriptsProxy(this);
this.addEventListener(Event.ENTER_FRAME, scriptsProxy.onEnterFrame, scriptsProxy);
this.addEventListener(Event.ADDED_TO_STAGE, scriptsProxy.onAddedToStage, scriptsProxy);
this.addEventListener(Event.REMOVED_FROM_STAGE, scriptsProxy.onRemovedFromStage, scriptsProxy);
};
}
function registerScriptDef(def) {
......@@ -1841,19 +1839,19 @@
configurable: true
});
}
var ScriptsContainer = (function () {
function ScriptsContainer(host) {
var ScriptsProxy = (function () {
function ScriptsProxy(host) {
this._scripts = [];
this._host = host;
}
Object.defineProperty(ScriptsContainer.prototype, "host", {
Object.defineProperty(ScriptsProxy.prototype, "host", {
get: function () {
return this._host;
},
enumerable: true,
configurable: true
});
ScriptsContainer.prototype.add = function (name, options, disabled) {
ScriptsProxy.prototype.add = function (name, options, disabled) {
var def = scriptDefs[name];
if (!def) {
console.warn('script def not exists');
......@@ -1872,7 +1870,7 @@
}
return script;
};
ScriptsContainer.prototype.remove = function (index) {
ScriptsProxy.prototype.remove = function (index) {
var script = this._scripts.splice(index, 1)[0];
if (script) {
if (this._host && this._host.stage) {
......@@ -1882,17 +1880,17 @@
}
return script;
};
Object.defineProperty(ScriptsContainer.prototype, "all", {
Object.defineProperty(ScriptsProxy.prototype, "all", {
get: function () {
return this._scripts;
},
enumerable: true,
configurable: true
});
ScriptsContainer.prototype.get = function (name) {
ScriptsProxy.prototype.get = function (name) {
return this._scripts.filter(function (script) { return script.constructor['name'] === name; });
};
ScriptsContainer.prototype.awake = function () {
ScriptsProxy.prototype.onAddedToStage = function () {
for (var _i = 0, _a = this._scripts; _i < _a.length; _i++) {
var script = _a[_i];
if (!script.disabled) {
......@@ -1900,7 +1898,7 @@
}
}
};
ScriptsContainer.prototype.sleep = function () {
ScriptsProxy.prototype.onRemovedFromStage = function () {
for (var _i = 0, _a = this._scripts; _i < _a.length; _i++) {
var script = _a[_i];
if (!script.disabled) {
......@@ -1908,7 +1906,8 @@
}
}
};
ScriptsContainer.prototype.update = function (t) {
ScriptsProxy.prototype.onEnterFrame = function (e) {
var t = e.data;
for (var _i = 0, _a = this._scripts; _i < _a.length; _i++) {
var script = _a[_i];
if (!script.disabled) {
......@@ -1916,7 +1915,7 @@
}
}
};
return ScriptsContainer;
return ScriptsProxy;
}());
var _a;
......@@ -1925,25 +1924,25 @@
_a);
function applyEvents(ctor) {
ctor.prototype.applyEvents = function () {
var events = this.events = new Events();
var eventsProxy = this.eventsProxy = new EventsProxy();
for (var k in eventsConfig) {
this.addEventListener(k, events.onEvent, events);
this.addEventListener(k, eventsProxy.onEvent, eventsProxy);
}
};
}
var Events = (function (_super) {
__extends(Events, _super);
function Events() {
var EventsProxy = (function (_super) {
__extends(EventsProxy, _super);
function EventsProxy() {
return _super.call(this) || this;
}
Events.prototype.invoke = function (name, e) {
EventsProxy.prototype.invoke = function (name, e) {
};
Events.prototype.onEvent = function (e) {
EventsProxy.prototype.onEvent = function (e) {
console.log(this.instanceId, e.type, e.currentTarget.name);
};
Events.prototype.destroy = function () {
EventsProxy.prototype.destroy = function () {
};
return Events;
return EventsProxy;
}(HashObject));
var Container = (function (_super) {
......@@ -2189,7 +2188,7 @@
if (isMouseEvent === void 0) { isMouseEvent = false; }
if (!this.visible)
return null;
if (isMouseEvent && !this.mouseEnabled)
if (isMouseEvent && !this.mouseChildren)
return null;
var children = this.children;
var length = children.length;
......@@ -4112,7 +4111,7 @@
if (isMouseEvent === void 0) { isMouseEvent = false; }
if (!this.visible)
return null;
if (isMouseEvent && !this.mouseEnabled)
if (isMouseEvent && !this.mouseEnabled && !this.mouseChildren)
return null;
var hitDisplayObject;
hitDisplayObject = _super.prototype.hitTestPoint.call(this, globalPoint, isMouseEvent);
......@@ -8523,10 +8522,9 @@
};
Graphics.prototype.hitTestPoint = function (point, isMouseEvent) {
if (isMouseEvent === void 0) { isMouseEvent = false; }
var s = this;
if (!s.visible)
if (!this.visible)
return null;
if (isMouseEvent && !s.mouseEnabled)
if (isMouseEvent && !this.mouseEnabled && !this.mouseChildren)
return null;
var hitDisplayObject;
hitDisplayObject = _super.prototype.hitTestPoint.call(this, point, isMouseEvent);
......@@ -8535,7 +8533,7 @@
this.updateLocalBoundsSelf();
hitDisplayObject = this.displayObjectHitTestPoint(point, isMouseEvent);
if (hitDisplayObject) {
if (!s.hitTestByPixel)
if (!this.hitTestByPixel)
return hitDisplayObject;
return this.hitTestPointAccuratly(point);
}
......@@ -9180,10 +9178,6 @@
Shape.prototype.hitTestPoint = function (globalPoint, isMouseEvent) {
if (isMouseEvent === void 0) { isMouseEvent = false; }
var s = this;
if (!s.visible)
return null;
if (isMouseEvent && !s.mouseEnabled)
return null;
var hitResult = _super.prototype.hitTestPoint.call(this, globalPoint, isMouseEvent);
if (!hitResult)
return null;
......@@ -11181,7 +11175,6 @@
return gameStage;
}
exports.AdjustData = AdjustData;
exports.BaseTexture = BaseTexture;
exports.Button = Button;
exports.Circle = Circle$1;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,59 +6,89 @@
import {Event} from "../../2d/events";
/**
* 自适应数据
*/
export class AdjustData {
percentWidth: number = NaN;
percentHeight: number = NaN;
left: number = NaN;
top: number = NaN;
right: number = NaN;
bottom: number = NaN;
horizonCenter: number = NaN;
verticalCenter: number = NaN;
}
function t(v) {
return !isNaN(v) && v !== null && v !== undefined;
}
/**
* 应用自适应
* @param ctor
*/
export function applyAutoAdjust(ctor: Function) {
ctor.prototype.applyAutoAdjust = function () {
let adjustData = new AdjustData();
this.__sizeDirty = true;
this.adjustData = adjustData;
this.addEventListener(Event.ADDED_TO_STAGE, this.__onAddedToStageAA, this);
this.addEventListener(Event.REMOVED_FROM_STAGE, this.__onRemovedFromStageAA, this);
};
ctor.prototype.__onAddedToStageAA = function () {
this.parent.addEventListener(Event.RESIZE, this.__onResizeAA, this);
this.addEventListener(Event.ENTER_FRAME, this.__onEnterFrameAA, this);
let adjustProxy = this.adjustProxy = new AdjustProxy(this);
this.addEventListener(Event.ADDED_TO_STAGE, adjustProxy.onAddedToStage, adjustProxy);
this.addEventListener(Event.REMOVED_FROM_STAGE, adjustProxy.onRemovedFromStage, adjustProxy);
};
ctor.prototype.__onRemovedFromStageAA = function () {
this.parent.removeEventListener(Event.RESIZE, this.__onResizeAA);
this.removeEventListener(Event.ENTER_FRAME, this.__onEnterFrameAA);
};
ctor.prototype.__onResizeAA = function () {
this.__sizeDirty = true;
let temp = new AdjustProxy(null);
for (let key in temp.data)
Object.defineProperty(ctor.prototype, key, {
get: function () {
return this.adjustProxy.data[key];
},
set: function (v) {
const adjustProxy: AdjustProxy = this.adjustProxy;
if (adjustProxy.data[key] !== v) {
adjustProxy.data[key] = v;
adjustProxy.makeDirty();
}
},
enumerable: true,
configurable: true
});
}
/**
* 自适应数据
*/
class AdjustProxy {
data = {
percentWidth: NaN,
percentHeight: NaN,
left: NaN,
top: NaN,
right: NaN,
bottom: NaN,
horizonCenter: NaN,
verticalCenter: NaN,
};
ctor.prototype.__onEnterFrameAA = function () {
if (this.__sizeDirty) {
this.__sizeDirty = false;
private _host;
private _sizeDirty;
constructor(host) {
this._host = host;
this.makeDirty();
}
makeDirty() {
this._sizeDirty = true;
}
onAddedToStage(e) {
this._host.parent.addEventListener(Event.RESIZE, this.onResize, this);
this._host.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, this);
}
onRemovedFromStage(e) {
this._host.parent.removeEventListener(Event.RESIZE, this.onResize);
this._host.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame);
}
private onResize(e) {
this._sizeDirty = true;
}
private onEnterFrame(e) {
if (this._sizeDirty) {
this._sizeDirty = false;
this.adjustLayout();
}
};
ctor.prototype.adjustLayout = function () {
const that = this;
const {width: pWidth, height: pHeight} = this.parent;
const {width, height} = this;
const {percentWidth, percentHeight, left, top, right, bottom, horizonCenter, verticalCenter} = this.adjustData;
}
adjustLayout() {
const that = this._host;
const {width: pWidth, height: pHeight} = that.parent;
const {width, height} = that;
const {percentWidth, percentHeight, left, top, right, bottom, horizonCenter, verticalCenter} = this.data;
const applyPercentWidth = function () {
if (t(percentWidth)) {
......@@ -74,16 +104,16 @@ export function applyAutoAdjust(ctor: Function) {
let pw = true, ph = true;
if (t(horizonCenter)) {
applyPercentWidth();
this.x = (pWidth - this.width) / 2 + horizonCenter;
that.x = (pWidth - that.width) / 2 + horizonCenter;
} else {
if (t(left)) {
this.x = left;
that.x = left;
if (t(right)) {
this.width = pWidth - left - right;
that.width = pWidth - left - right;
pw = false;
}
} else if (t(right)) {
this.x = pWidth - width - right;
that.x = pWidth - width - right;
}
if (pw) {
applyPercentWidth();
......@@ -92,34 +122,25 @@ export function applyAutoAdjust(ctor: Function) {
if (t(verticalCenter)) {
applyPercentHeight();
this.y = (pHeight - this.height) / 2 + verticalCenter;
that.y = (pHeight - that.height) / 2 + verticalCenter;
} else {
if (t(top)) {
this.y = top;
that.y = top;
if (t(bottom)) {
this.height = pHeight - top - bottom;
that.height = pHeight - top - bottom;
ph = false;
}
} else if (t(bottom)) {
this.y = pHeight - height - bottom;
that.y = pHeight - height - bottom;
}
if (ph) {
applyPercentHeight();
}
}
};
for (let key in new AdjustData())
Object.defineProperty(ctor.prototype, key, {
get: function () {
return this.adjustData[key];
},
set: function (v) {
if (this.adjustData[key] !== v) {
this.adjustData[key] = v;
this.__sizeDirty = true;
}
},
enumerable: true,
configurable: true
});
}
}
function t(v) {
return !isNaN(v) && v !== null && v !== undefined;
}
......@@ -21,14 +21,14 @@ const eventsConfig = {
*/
export function applyEvents(ctor: Function) {
ctor.prototype.applyEvents = function () {
let events = this.events = new Events();
let eventsProxy = this.eventsProxy = new EventsProxy();
for(let k in eventsConfig){
this.addEventListener(k, events.onEvent, events);
this.addEventListener(k, eventsProxy.onEvent, eventsProxy);
}
};
}
class Events extends HashObject{
class EventsProxy extends HashObject{
constructor(){
super();
}
......
......@@ -14,20 +14,11 @@ const scriptDefs = {};
*/
export function applyScript(ctor: Function) {
ctor.prototype.applyScripts = function () {
this.scripts = new ScriptsContainer(this);
let scriptsProxy = this.scriptsProxy = new ScriptsProxy(this);
this.addEventListener(Event.ENTER_FRAME, this.__onEnterFrameS, this);
this.addEventListener(Event.ADDED_TO_STAGE, this.__onAddedToStageS, this);
this.addEventListener(Event.REMOVED_FROM_STAGE, this.__onRemovedFromStageS, this);
};
ctor.prototype.__onEnterFrameS = function (e) {
this.scripts.update(e.data);
};
ctor.prototype.__onAddedToStageS = function (e) {
this.scripts.awake();
};
ctor.prototype.__onRemovedFromStageS = function (e) {
this.scripts.sleep();
this.addEventListener(Event.ENTER_FRAME, scriptsProxy.onEnterFrame, scriptsProxy);
this.addEventListener(Event.ADDED_TO_STAGE, scriptsProxy.onAddedToStage, scriptsProxy);
this.addEventListener(Event.REMOVED_FROM_STAGE, scriptsProxy.onRemovedFromStage, scriptsProxy);
};
}
......@@ -79,7 +70,7 @@ export function registerScriptDef(def) {
/**
* 脚本容器
*/
class ScriptsContainer {
class ScriptsProxy {
private _host: Container;
private _scripts: IScript[] = [];
......@@ -152,7 +143,7 @@ class ScriptsContainer {
/**
* 唤醒
*/
awake() {
onAddedToStage() {
for (let script of this._scripts) {
if (!script.disabled) {
script.awake();
......@@ -163,7 +154,7 @@ class ScriptsContainer {
/**
* 睡眠
*/
sleep() {
onRemovedFromStage() {
for (let script of this._scripts) {
if (!script.disabled) {
script.sleep();
......@@ -174,7 +165,8 @@ class ScriptsContainer {
/**
* 更新脚本时钟
*/
update(t) {
onEnterFrame(e) {
let t = e.data;
for (let script of this._scripts) {
if (!script.disabled) {
script.update(t);
......
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