2022-08-26 16:48:17 +08:00

429 lines
13 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

declare namespace cc {
export interface Node {
/**
* 設定世界座標
* @param worldPoint
*/
SetWorldPosition(worldPoint: cc.Vec2 | cc.Vec3): void;
/**
* 取得世界座標
*/
GetWorldPosition(): cc.Vec2;
/**
* 取得目標在自己區域的相對座標
* @param target
*/
GetTargetInMyLocalPosition(target: cc.Node): cc.Vec2;
/**
* 取得目標距離
* @param target
*/
GetTargetDistance(target: cc.Node): number;
/**
* 設定長寬
* @param size
*/
SetSizeDelta(size: cc.Vec2);
/**
* 取得長寬
*/
GetSizeDelta(): cc.Vec2;
/**
* 增加一個子物件
* @param childObj
*/
ExAddChild(childObj: cc.Prefab | cc.Node, childActive?: boolean): cc.Node;
/**設定層級為最低層 */
ExSetLowestOrder(): void;
/**設定層級為最高層 */
ExSetHighestOrder(): void;
/**設定層級,比目標OBJ再低一層 */
ExSetOrderUnderTheObj(obj: cc.Node, isNew?: boolean): number;
/**設定層級,比目標OBJ再高一層 */
ExSetOrderOverTheObj(obj: cc.Node, isNew?: boolean): number;
/**位置維持在原位 */
ExSetParent(parentObj: cc.Node): void;
ExSetGray(showGray: boolean): void;
/** 通過觀察目標來設置 rotation */
ExLookAt(targetPos: cc.Vec3): void;
/**
* !#zh
* 当前节点的自身激活状态。<br/>
* 值得注意的是,一个节点的父节点如果不被激活,那么即使它自身设为激活,它仍然无法激活。<br/>
* 如果你想检查节点在场景中实际的激活状态可以使用 {{#crossLink "Node/activeInHierarchy:property"}}{{/crossLink}}。
* @param value 当前节点的自身激活状态
*/
SetActive(value: boolean): void;
}
// export interface ActionInterval {
// step(dt: number): void;
// }
export interface Tween {
/**
* 獲取持續時間
* @example let duration = tween.duration();
*/
duration(): number;
/**
* 獲取已經進行的時間
* @example let elapsed = tween.elapsed();
*/
elapsed(): number;
/**
* 跳轉到指定時間
* @param time 時間(秒)
* @example tween.goto(2);
*/
goto(time: number): void;
}
}
cc.Node.prototype.SetWorldPosition || Object.defineProperty(cc.Node.prototype, 'SetWorldPosition', {
enumerable: false,
value: function (cocosWorldPos: cc.Vec2 | cc.Vec3) {
// let cocosWorldPos = new cc.Vec2(unityWorldPos.x + 711, unityWorldPos.y + 400);
this.setPosition(this.parent.convertToNodeSpaceAR(cocosWorldPos));
}
})
cc.Node.prototype.GetWorldPosition || Object.defineProperty(cc.Node.prototype, 'GetWorldPosition', {
enumerable: false,
value: function () {
let cocosWorldPos = this.parent.convertToWorldSpaceAR(this.position);
// let unityWorldPos = new cc.Vec2(cocosWorldPos.x - 711, cocosWorldPos.y - 400);
return cocosWorldPos;
}
})
cc.Node.prototype.GetTargetInMyLocalPosition || Object.defineProperty(cc.Node.prototype, 'GetTargetInMyLocalPosition', {
enumerable: false,
value: function (target: cc.Node): cc.Vec2 {
let selfPos: cc.Vec2 = this.GetWorldPosition();
let targetPos: cc.Vec2 = target.GetWorldPosition();
let diff: cc.Vec2 = targetPos.sub(selfPos);
let newPos: cc.Vec2 = this.getPosition().add(diff);
return newPos;
}
});
cc.Node.prototype.GetTargetDistance || Object.defineProperty(cc.Node.prototype, 'GetTargetDistance', {
enumerable: false,
value: function (target: cc.Node): number {
let vector: cc.Vec2 = target.GetWorldPosition().sub(this.GetWorldPosition());
let distance: number = vector.mag();
return distance;
}
});
cc.Node.prototype.SetSizeDelta || Object.defineProperty(cc.Node.prototype, 'SetSizeDelta', {
enumerable: false,
value: function (size: cc.Vec2) {
this.setContentSize(size.x, size.y);
}
})
cc.Node.prototype.GetSizeDelta || Object.defineProperty(cc.Node.prototype, 'GetSizeDelta', {
enumerable: false,
value: function () {
let size: cc.Size = this.GetSizeDelta();
return new cc.Vec2(size.width, size.width);
}
})
cc.Node.prototype.ExAddChild || Object.defineProperty(cc.Node.prototype, 'ExAddChild', {
enumerable: false,
value: function (childObj: cc.Prefab | cc.Node, childActive: boolean = true) {
let gameObj = null;
if (childObj instanceof cc.Prefab) {
gameObj = cc.instantiate(childObj);
}
else {
gameObj = cc.instantiate(childObj);
}
gameObj.active = childActive ? true : childActive;
gameObj.parent = this;
return gameObj;
}
})
cc.Node.prototype.ExSetLowestOrder || Object.defineProperty(cc.Node.prototype, 'ExSetLowestOrder', {
enumerable: false,
value: function () {
this.setSiblingIndex(0);
}
})
cc.Node.prototype.ExSetHighestOrder || Object.defineProperty(cc.Node.prototype, 'ExSetHighestOrder', {
enumerable: false,
value: function () {
this.setSiblingIndex(Number.MAX_VALUE);
}
})
cc.Node.prototype.ExSetOrderUnderTheObj || Object.defineProperty(cc.Node.prototype, 'ExSetOrderUnderTheObj', {
enumerable: false,
value: function (obj: cc.Node, isNew?: boolean) {
let newIndex: number;
let objIndex = obj.getSiblingIndex();
// 如果是新創的元件
if (isNew) {
newIndex = objIndex;
}
// 如果是已經在場景上的元件
else {
let myIndex = this.getSiblingIndex();
// 如果一開始就在它下面
if (myIndex < objIndex) {
newIndex = objIndex - 1;
}
else {
newIndex = objIndex;
}
}
this.setSiblingIndex(newIndex);
return newIndex;
}
})
cc.Node.prototype.ExSetOrderOverTheObj || Object.defineProperty(cc.Node.prototype, 'ExSetOrderOverTheObj', {
enumerable: false,
value: function (obj: cc.Node, isNew?: boolean) {
let newIndex: number;
let objIndex = obj.getSiblingIndex();
// 如果是新創的元件
if (isNew) {
newIndex = objIndex + 1;
}
// 如果是已經在場景上的元件
else {
let myIndex = this.getSiblingIndex();
// 如果一開始就在它下面
if (myIndex < objIndex) {
newIndex = objIndex;
}
else {
newIndex = objIndex + 1;
}
}
this.setSiblingIndex(newIndex);
return newIndex;
}
})
cc.Node.prototype.ExSetParent || Object.defineProperty(cc.Node.prototype, 'ExSetParent', {
enumerable: false,
value: function (parentObj: cc.Node) {
let oriPos = this.GetWorldPosition();
this.setParent(parentObj);
this.SetWorldPosition(oriPos);
}
})
cc.Node.prototype.ExSetGray || Object.defineProperty(cc.Node.prototype, 'ExSetGray', {
enumerable: false,
value: function (showGray: boolean): void {
let btn: cc.Button = this.getComponent(cc.Button);
if (btn) {
btn.interactable = !showGray;
}
let material: cc.Material = cc.Material.createWithBuiltin(showGray ? cc.Material.BUILTIN_NAME.GRAY_SPRITE.toString() : cc.Material.BUILTIN_NAME.SPRITE.toString(), 0);
!showGray && material.define("USE_TEXTURE", true, 0);
let spriteComs: any[] = this.getComponentsInChildren(cc.Sprite).concat(this.getComponentsInChildren(cc.Label));
for (let sprite of spriteComs) {
sprite.setMaterial(0, material);
}
// 先使用createWithBuiltin如果材質球一直Create沒被刪除會在修改。
// let material: cc.Material = cc.Material.getBuiltinMaterial(showGray ? cc.Material.BUILTIN_NAME.GRAY_SPRITE.toString() : cc.Material.BUILTIN_NAME.SPRITE.toString());
// for (let sprite of spriteComs) {
// if (showGray) {
// sprite.setMaterial(0, cc.Material.getBuiltinMaterial('2d-gray-sprite'));
// }
// else {
// sprite.setMaterial(0, cc.Material.getBuiltinMaterial('2d-sprite'));
// }
// }
},
});
cc.Node.prototype.ExLookAt || Object.defineProperty(cc.Node.prototype, "ExLookAt", {
enumerable: false,
value: function (targetPos: cc.Vec3): void {
let TargetX: number = targetPos.x;
let TargetY: number = targetPos.y;
let SelfX: number = this.x;
let SelfY: number = this.y;
let r1: number = Math.atan2(TargetX - SelfX, TargetY - SelfY);
let angle: number = (180 * r1 / Math.PI);
this.angle = -angle;
},
});
cc.Node.prototype.SetActive || Object.defineProperty(cc.Node.prototype, "SetActive", {
enumerable: false,
value: function (value: boolean): void {
this.active = value;
},
});
// cc.Node.prototype.SetWorldPosition = function (cocosWorldPos: cc.Vec2): void {
// // let cocosWorldPos = new cc.Vec2(unityWorldPos.x + 711, unityWorldPos.y + 400);
// this.setPosition(this.parent.convertToNodeSpaceAR(cocosWorldPos));
// }
// cc.Node.prototype.GetWorldPosition = function (): cc.Vec2 {
// let cocosWorldPos = this.parent.convertToWorldSpaceAR(this.position);
// // let unityWorldPos = new cc.Vec2(cocosWorldPos.x - 711, cocosWorldPos.y - 400);
// return cocosWorldPos;
// }
// cc.Node.prototype.SetSizeDelta = function (size: cc.Vec2) {
// this.setContentSize(size.x, size.y);
// }
// cc.Node.prototype.GetSizeDelta = function (): cc.Vec2 {
// let size: cc.Size = this.GetSizeDelta();
// return new cc.Vec2(size.width, size.width);
// }
// cc.Node.prototype.ExAddChild = function (childObj: cc.Prefab | cc.Node): cc.Node {
// let gameObj = null;
// if (childObj instanceof cc.Prefab) {
// gameObj = cc.instantiate(childObj);
// }
// else {
// gameObj = cc.instantiate(childObj);
// }
// gameObj.parent = this;
// return gameObj;
// }
// cc.Node.prototype.ExSetLowestOrder = function (): void {
// this.setSiblingIndex(0);
// }
// cc.Node.prototype.ExSetHighestOrder = function (): void {
// this.setSiblingIndex(Number.MAX_VALUE);
// }
// cc.ActionInterval.prototype.step || Object.defineProperty(cc.ActionInterval.prototype, "step", {
// enumerable: false,
// value: function (dt: number): void {
// if (this.paused) {
// return;
// }
// if (this._firstTick && !this._goto) {
// this._firstTick = false;
// this._elapsed = 0;
// } else {
// this._elapsed += dt;
// }
// let t: number = this._elapsed / (this._duration > 0.0000001192092896 ? this._duration : 0.0000001192092896);
// t = (1 > t ? t : 1);
// this.update(t > 0 ? t : 0);
// // Compatible with repeat class, Discard after can be deleted (this._repeatMethod)
// if (this._repeatMethod && this._timesForRepeat > 1 && this.isDone()) {
// if (!this._repeatForever) {
// this._timesForRepeat--;
// }
// this.startWithTarget(this.target);
// this.step(this._elapsed - this._duration);
// }
// }
// });
// /**
// * 暂停
// * @example tween.pause();
// */
// cc.Tween.prototype.pause = function () {
// this._finalAction.paused = true;
// };
// /**
// * 恢复
// * @example tween.resume();
// */
// cc.Tween.prototype.resume = function () {
// this._finalAction.paused = false;
// };
// /**
// * 倍速播放
// * @param speed 倍速
// * @example tween.speed(2);
// */
// cc.Tween.prototype.speed = function (speed) {
// this._finalAction._speedMethod = true;
// this._finalAction._speed = speed;
// }
cc.Tween.prototype.duration || Object.defineProperty(cc.Tween.prototype, "duration", {
enumerable: false,
value: function (): number {
// let duration: number = this._finalAction._duration;
let duration: number = 0;
for (let i: number = 0; i < this["_actions"].length - 1; i++) {
const action: any = this["_actions"][i];
duration += action._duration;
}
// duration += ((cc.game.getFrameRate() / 3) / cc.game.getFrameRate());
duration *= 1.3;
return duration;
}
});
cc.Tween.prototype.elapsed || Object.defineProperty(cc.Tween.prototype, "elapsed", {
enumerable: false,
value: function (): number {
return this._finalAction._elapsed;
}
});
cc.Tween.prototype.goto || Object.defineProperty(cc.Tween.prototype, "goto", {
enumerable: false,
/**
* @param time 時間(秒)
*/
value: function (time: number): void {
this._finalAction._goto = true;
this._finalAction._elapsed = time;
}
});
// cc.ActionManager.prototype.pauseByTag = function (tag, pause) {
// if (tag === cc.Action.TAG_INVALID) {
// cc.logID(1002);
// }
// let hashTargets = this._hashTargets;
// for (let name in hashTargets) {
// let element = hashTargets[name];
// for (let i = 0, l = element.actions.length; i < l; ++i) {
// let action = element.actions[i];
// if (action && action.getTag() === tag) {
// action.paused = pause;
// break;
// }
// }
// }
// }
// /**
// * 根据标签暂停动作
// * @param tag tween的标签
// * @example cc.Tween.pauseByTag(100);
// */
// cc.Tween.pauseByTag = function (tag) {
// cc.director.getActionManager().pauseByTag(tag, true);
// }
// /**
// * 根据标签恢复动作
// * @param tag tween的标签
// * @example cc.Tween.resumeByTag(100);
// */
// cc.Tween.resumeByTag = function (tag) {
// cc.director.getActionManager().pauseByTag(tag, false);
// }