网站首页 javascript技术
fairygui-替身移动拓展
发布时间:2019-02-22 06:58查看次数:4503
原有框架提供的方法可以完成拓展,但是没有自定义回调方法~~
应用场景:比如拓展失败后返回给当前对接一个CALLBACK 回调
/**
* 拖动类
*/
module MyGame {
export class dropMangager extends fairygui.DragDropManager {
public _callback:any;
public constructor() {
super();
}
public startDrag2(callback, source: fairygui.GObject, icon: string, sourceData: any, touchPointID?: number) {
this._callback = callback;
this.startDrag(source, icon, sourceData, touchPointID)
let self = this;
}
public __dragEnd (evt) {
if (this._agent.parent == null)
return;
fairygui.GRoot.inst.removeChild(this._agent);
var sourceData = this._sourceData;
this._sourceData = null;
var obj = fairygui.GRoot.inst.getObjectUnderPoint(evt.stageX, evt.stageY);
while (obj != null) {
if (obj.hasEventListener(fairygui.DropEvent.DROP)) {
var dropEvt = new fairygui.DropEvent(fairygui.DropEvent.DROP, sourceData);
obj.requestFocus();
obj.dispatchEvent(dropEvt);
return;
}
obj = obj.parent;
this._callback();
}
};
}
}代码如上
重写父类方法 __dragend 方法~~
这里要注意 原有框架的TS文件 定义的时间 是私有属性不能重写调用
需要把关键字 private 改成 protected 保护 重写父类动作~
修改后如下
declare module fairygui {
class DragDropManager {
protected _agent;
protected _sourceData;
protected static _inst;
static readonly inst: DragDropManager;
constructor();
readonly dragAgent: fairygui.GObject;
readonly dragging: boolean;
startDrag(source: fairygui.GObject, icon: string, sourceData: any, touchPointID?: number): void;
cancel(): void;
__dragEnd(evt);
}
}关键字词:javascript##