mirror of
https://github.com/blanking003/cx-cocos.git
synced 2024-12-26 11:49:01 +00:00
72 lines
2.2 KiB
TypeScript
72 lines
2.2 KiB
TypeScript
|
||
import {_decorator, Component, Node, EventTouch, Tween, tween} from 'cc';
|
||
const {ccclass} = _decorator;
|
||
|
||
@ccclass('cxui.page')
|
||
class CxuiPage extends Component
|
||
{
|
||
onLoad ()
|
||
{
|
||
cx.makeNodeMap(this.node);
|
||
this.node.on(Node.EventType.TOUCH_START, (event: EventTouch) =>
|
||
{
|
||
event.propagationStopped = true;
|
||
});
|
||
}
|
||
|
||
/* 在page的onLoad事件中可修改以下属性,变更默认的进出动画
|
||
this.initPx: 初始位置
|
||
this.initPy: 初始位置
|
||
this.moveInAction: 进入动画
|
||
this.nextInAction: 进入时,上一页面的动画
|
||
this.moveOutAction: 关闭动画
|
||
this.nextOutAction: 关闭时,上一页面的动画
|
||
*/
|
||
public initPx?: number;
|
||
public initPy?: number;
|
||
public moveInAction?: Tween<any>;
|
||
public nextInAction?: Tween<any>;
|
||
public moveOutAction?: Tween<any>;
|
||
public nextOutAction?: Tween<any>;
|
||
runActionShow ()
|
||
{
|
||
if (cx.os.android)
|
||
this.node.androidBackHandler = "closePage";
|
||
if (cx.config.pageActionDisabled || this.node.pageActionDisabled)
|
||
return;
|
||
var x = this.initPx != undefined ? this.initPx : cx.defaultInitPx;
|
||
var y = this.initPy != undefined ? this.initPy : cx.defaultInitPy;
|
||
this.node.setPosition(x, y);
|
||
tween(this.node).then(this.moveInAction || cx.defaultMoveInAction).start();
|
||
|
||
var priorPage = cx.getTopPage(-1);
|
||
if (priorPage)
|
||
{
|
||
tween(priorPage).then(this.nextInAction || cx.defaultNextInAction).start();
|
||
var priorMask: any = priorPage.getComponent("cxui.nativeMask");
|
||
if (priorMask)
|
||
priorMask.setMonitorNode(this.node);
|
||
}
|
||
}
|
||
|
||
runActionClose ()
|
||
{
|
||
var priorPage = cx.getTopPage(-1);
|
||
if (priorPage && priorPage.mainComponent && priorPage.mainComponent.onChildPageClosed)
|
||
priorPage.mainComponent.onChildPageClosed.call(priorPage.mainComponent, this.node.mainComponent);
|
||
if (cx.config.pageActionDisabled || this.node.pageActionDisabled)
|
||
{
|
||
this.node.destroy();
|
||
return;
|
||
}
|
||
tween(this.node).then(this.moveOutAction || cx.defaultMoveOutAction).call(()=>{this.node.destroy();}).start();
|
||
if (priorPage)
|
||
{
|
||
tween(priorPage).then(this.nextOutAction || cx.defaultNextOutAction).start();
|
||
// var priorMask = priorPage.getComponent("cxui.nativeMask");
|
||
// if (priorMask)
|
||
// priorMask.setMonitorNode();
|
||
}
|
||
}
|
||
}
|