You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.4 KiB
62 lines
1.4 KiB
4 weeks ago
|
|
||
|
const { ccclass, property } = cc._decorator;
|
||
|
|
||
|
//定义
|
||
|
export enum Direction {
|
||
|
UP = 1,
|
||
|
Down = 2,
|
||
|
Left = 3,
|
||
|
Right = 4,
|
||
|
};
|
||
|
|
||
|
@ccclass
|
||
|
export default class PopUp extends cc.Component {
|
||
|
|
||
|
@property({ type: cc.Enum(Direction) })
|
||
|
direction = Direction.Down;
|
||
|
|
||
|
@property
|
||
|
duration = 0.5;
|
||
|
|
||
|
@property
|
||
|
delay = 0;
|
||
|
|
||
|
protected orgX = 0;
|
||
|
protected orgY = 0;
|
||
|
onEnable() {
|
||
|
let widget = this.node.getComponent(cc.Widget);
|
||
|
if (widget) {
|
||
|
widget.updateAlignment();
|
||
|
widget.enabled = false;
|
||
|
}
|
||
|
this.popIn();
|
||
|
}
|
||
|
|
||
|
public popIn() {
|
||
|
this.orgX = this.node.x;
|
||
|
this.orgY = this.node.y;
|
||
|
if (this.direction == Direction.UP) {
|
||
|
this.node.y = cc.winSize.height;
|
||
|
} else if (this.direction == Direction.Down) {
|
||
|
this.node.y = -cc.winSize.height;
|
||
|
} else if (this.direction == Direction.Left) {
|
||
|
this.node.x = -cc.winSize.width;
|
||
|
} else {
|
||
|
this.node.x = cc.winSize.width;
|
||
|
}
|
||
|
|
||
|
cc.tween(this.node)
|
||
|
.delay(this.delay)
|
||
|
.to(this.duration, { x: this.orgX, y: this.orgY }, { easing: "backOut" })
|
||
|
.call(() => {
|
||
|
let widget = this.node.getComponent(cc.Widget);
|
||
|
if (widget) {
|
||
|
widget.enabled = true;
|
||
|
widget.updateAlignment();
|
||
|
}
|
||
|
})
|
||
|
.start();
|
||
|
}
|
||
|
|
||
|
}
|