网站首页 javascript技术
fairygui-替身移动拓展
发布时间:2019-02-22 06:58查看次数:2475
原有框架提供的方法可以完成拓展,但是没有自定义回调方法~~
应用场景:比如拓展失败后返回给当前对接一个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##