update
This commit is contained in:
@@ -7,68 +7,54 @@ import { ConfirmDialog } from "./Item/ConfirmDialog";
|
|||||||
import { CommAdDialog } from "./Item/CommAdDialog";
|
import { CommAdDialog } from "./Item/CommAdDialog";
|
||||||
import Utils from "../Main/Common/Utils";
|
import Utils from "../Main/Common/Utils";
|
||||||
import { InnerMsgCode } from "../Main/Config/InnerMsgCode";
|
import { InnerMsgCode } from "../Main/Config/InnerMsgCode";
|
||||||
|
import { TipsPanel } from "../chat18x/ui/panels/TipsPanel";
|
||||||
|
|
||||||
const { ccclass, property } = _decorator;
|
const { ccclass, property } = _decorator;
|
||||||
|
|
||||||
//项目管理器
|
//项目管理器
|
||||||
@ccclass('SubManager')
|
@ccclass("SubManager")
|
||||||
export default class SubManager {
|
export default class SubManager {
|
||||||
|
private static _I: SubManager = null;
|
||||||
private static _I: SubManager = null;
|
public static get I(): SubManager {
|
||||||
public static get I(): SubManager {
|
if (!SubManager._I) {
|
||||||
if (!SubManager._I) {
|
SubManager._I = new SubManager();
|
||||||
SubManager._I = new SubManager();
|
SubManager._I.init();
|
||||||
SubManager._I.init();
|
|
||||||
}
|
|
||||||
return SubManager._I;
|
|
||||||
}
|
}
|
||||||
|
return SubManager._I;
|
||||||
|
}
|
||||||
|
|
||||||
private init(){
|
private init() {}
|
||||||
|
|
||||||
|
//飘字提示----------------------------------------------------------------------------
|
||||||
|
public static ShowPrompt(text: string) {
|
||||||
|
TipsPanel.show(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
//显示确定框----------------------------------------------------------------------------
|
||||||
|
/**通用确认框 { content: string, strYes?: string, strNo?: string, yesCallback?: Function, noCallback?: Function, closeCallback?: Function } */
|
||||||
|
public static ShowConfirm(param: any) {
|
||||||
|
if (!GameRootUI.I) {
|
||||||
|
console.warn("GameRootUI还未初始化", param);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
ResManager.I.loadSubpackagePrefab("item/ConfirmDialog", (n_node: Node) => {
|
||||||
|
GameRootUI.I.AddUIToLayer(n_node, CommonConfig.UILayerGroup.Layer_tips);
|
||||||
//飘字提示----------------------------------------------------------------------------
|
let pItem = n_node.getComponent(ConfirmDialog);
|
||||||
public static ShowPrompt(text: string) {
|
pItem.setParam(param);
|
||||||
if (!GameRootUI.I) {
|
});
|
||||||
console.warn("GameRootUI还未初始化", text);
|
}
|
||||||
Utils.sendInnerMsg(InnerMsgCode.UI_ShowPrompt, {text: text});
|
|
||||||
return
|
//显示通用广告框----------------------------------------------------------------------------
|
||||||
}
|
/**通用广告框 { content: string, strAd?: string, strLeft?: string, adCallback?: Function, leftCallback?: Function, closeCallback?: Function } */
|
||||||
ResManager.I.loadSubpackagePrefab("item/promptItem", (n_node: Node)=>{
|
public static ShowCommonAdDialog(param: any) {
|
||||||
GameRootUI.I.AddUIToLayer(n_node, CommonConfig.UILayerGroup.Layer_tips)
|
if (!GameRootUI.I) {
|
||||||
let pItem = n_node.getComponent(promptItem)
|
console.warn("GameRootUI还未初始化", param);
|
||||||
pItem.setLabel(text)
|
return;
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
ResManager.I.loadSubpackagePrefab("item/CommAdDialog", (n_node: Node) => {
|
||||||
|
GameRootUI.I.AddUIToLayer(n_node, CommonConfig.UILayerGroup.Layer_tips);
|
||||||
//显示确定框----------------------------------------------------------------------------
|
let pItem = n_node.getComponent(CommAdDialog);
|
||||||
/**通用确认框 { content: string, strYes?: string, strNo?: string, yesCallback?: Function, noCallback?: Function, closeCallback?: Function } */
|
pItem.setParam(param);
|
||||||
public static ShowConfirm(param:any) {
|
});
|
||||||
if (!GameRootUI.I) {
|
}
|
||||||
console.warn("GameRootUI还未初始化", param);
|
}
|
||||||
return
|
|
||||||
}
|
|
||||||
ResManager.I.loadSubpackagePrefab("item/ConfirmDialog", (n_node: Node)=>{
|
|
||||||
GameRootUI.I.AddUIToLayer(n_node, CommonConfig.UILayerGroup.Layer_tips)
|
|
||||||
let pItem = n_node.getComponent(ConfirmDialog)
|
|
||||||
pItem.setParam(param)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//显示通用广告框----------------------------------------------------------------------------
|
|
||||||
/**通用广告框 { content: string, strAd?: string, strLeft?: string, adCallback?: Function, leftCallback?: Function, closeCallback?: Function } */
|
|
||||||
public static ShowCommonAdDialog(param:any) {
|
|
||||||
if (!GameRootUI.I) {
|
|
||||||
console.warn("GameRootUI还未初始化", param);
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ResManager.I.loadSubpackagePrefab("item/CommAdDialog", (n_node: Node)=>{
|
|
||||||
GameRootUI.I.AddUIToLayer(n_node, CommonConfig.UILayerGroup.Layer_tips)
|
|
||||||
let pItem = n_node.getComponent(CommAdDialog)
|
|
||||||
pItem.setParam(param)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -106,11 +106,7 @@ export class PreloadUI extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected onDestroy(): void {
|
protected onDestroy(): void {
|
||||||
Utils.removeInnerEL(
|
|
||||||
InnerMsgCode.UI_ShowPrompt,
|
|
||||||
this,
|
|
||||||
this.resiveShowPrompt
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
update(deltaTime: number) {
|
update(deltaTime: number) {
|
||||||
@@ -127,17 +123,6 @@ export class PreloadUI extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**收到飘字消息 */
|
|
||||||
resiveShowPrompt(data: any) {
|
|
||||||
let msg = data.text;
|
|
||||||
let self = this;
|
|
||||||
ResManager.I.loadSubpackagePrefab("item/promptItem", (n_node: Node) => {
|
|
||||||
self.node.addChild(n_node);
|
|
||||||
let pItem = n_node.getComponent(promptItem);
|
|
||||||
pItem.setLabel(msg);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//预加载文件
|
//预加载文件
|
||||||
preloadFiles() {
|
preloadFiles() {
|
||||||
let preloadTab = [
|
let preloadTab = [
|
||||||
|
|||||||
@@ -127,14 +127,20 @@ export class NavigationManager {
|
|||||||
* 统一的面板切换方法
|
* 统一的面板切换方法
|
||||||
* @param panelType 目标面板类型
|
* @param panelType 目标面板类型
|
||||||
*/
|
*/
|
||||||
public switchToPanel(panelType: PanelType, force: boolean = false): Node {
|
public switchToPanel(
|
||||||
|
panelType: PanelType,
|
||||||
|
force: boolean = false,
|
||||||
|
callback: Function = null
|
||||||
|
): Node {
|
||||||
if (!panelType) {
|
if (!panelType) {
|
||||||
console.error("[NavigationManager] switchToPanel: panelType is invalid");
|
console.error("[NavigationManager] switchToPanel: panelType is invalid");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.currentActivePanelType === panelType && !force) {
|
if (this.currentActivePanelType === panelType && !force) {
|
||||||
console.log(`[NavigationManager] Already on ${panelType}, skipping switch`);
|
console.log(
|
||||||
|
`[NavigationManager] Already on ${panelType}, skipping switch`
|
||||||
|
);
|
||||||
return this.currentActivePanel;
|
return this.currentActivePanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,10 +167,9 @@ export class NavigationManager {
|
|||||||
const showDirection = isMovingRight ? "right" : "left";
|
const showDirection = isMovingRight ? "right" : "left";
|
||||||
|
|
||||||
// 隐藏当前面板(包括子页面)
|
// 隐藏当前面板(包括子页面)
|
||||||
if (!this.currentActivePanel || !this.currentActivePanel.isValid) {
|
if (this.currentActivePanel && this.currentActivePanel.isValid) {
|
||||||
return;
|
this.hidePanelWithAnimation(this.currentActivePanel, hideDirection);
|
||||||
}
|
}
|
||||||
this.hidePanelWithAnimation(this.currentActivePanel, hideDirection);
|
|
||||||
|
|
||||||
// 加载并显示目标面板
|
// 加载并显示目标面板
|
||||||
this.loadOrGetPanel(panelType, (panel: Node) => {
|
this.loadOrGetPanel(panelType, (panel: Node) => {
|
||||||
@@ -179,13 +184,15 @@ export class NavigationManager {
|
|||||||
this.showPanelWithAnimation(panel, showDirection, () => {
|
this.showPanelWithAnimation(panel, showDirection, () => {
|
||||||
this.currentActivePanel = panel;
|
this.currentActivePanel = panel;
|
||||||
this.navigationPanel.hideLoading?.();
|
this.navigationPanel.hideLoading?.();
|
||||||
|
if (callback instanceof Function) callback(panel);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private subPanelDic: Map<Node, Node[]> = new Map();
|
private subPanelDic: Map<Node, Node[]> = new Map();
|
||||||
private subPanelMapping: Map<Node, PanelType> = new Map();
|
private subPanelMapping: Map<Node, PanelType> = new Map();
|
||||||
private subPanelAnimationConfigs: Map<Node, SubPanelAnimationConfig> = new Map();
|
private subPanelAnimationConfigs: Map<Node, SubPanelAnimationConfig> =
|
||||||
|
new Map();
|
||||||
|
|
||||||
// 弹窗管理相关属性
|
// 弹窗管理相关属性
|
||||||
private popupPanels: Set<Node> = new Set(); // 管理所有打开的弹窗
|
private popupPanels: Set<Node> = new Set(); // 管理所有打开的弹窗
|
||||||
@@ -193,6 +200,75 @@ export class NavigationManager {
|
|||||||
// 动画锁,防止动画中重复操作
|
// 动画锁,防止动画中重复操作
|
||||||
private isAnimating: boolean = false;
|
private isAnimating: boolean = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 带动画的子面板清理方法
|
||||||
|
* @param basePanel 主面板节点
|
||||||
|
* @param callback 所有动画完成后的回调
|
||||||
|
*/
|
||||||
|
private clearSubPanelsWithAnimation(
|
||||||
|
basePanel: Node,
|
||||||
|
callback?: Function
|
||||||
|
): void {
|
||||||
|
if (!basePanel || !basePanel.isValid) {
|
||||||
|
callback && callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const subPanels = this.subPanelDic.get(basePanel);
|
||||||
|
if (!subPanels || subPanels.length === 0) {
|
||||||
|
callback && callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let completedCount = 0;
|
||||||
|
const totalCount = subPanels.length;
|
||||||
|
|
||||||
|
// 完成动画的回调
|
||||||
|
const onAnimationComplete = () => {
|
||||||
|
completedCount++;
|
||||||
|
if (completedCount >= totalCount) {
|
||||||
|
// 清理subPanelDic
|
||||||
|
this.subPanelDic.delete(basePanel);
|
||||||
|
callback && callback();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 同时播放所有子面板的关闭动画
|
||||||
|
for (let i = subPanels.length - 1; i >= 0; i--) {
|
||||||
|
const subPanel = subPanels[i];
|
||||||
|
if (subPanel && subPanel.isValid) {
|
||||||
|
// 获取动画配置
|
||||||
|
let config = this.subPanelAnimationConfigs.get(subPanel);
|
||||||
|
if (!config) {
|
||||||
|
config = {
|
||||||
|
openAnimation: PageTransitionType.SCALE,
|
||||||
|
closeAnimation: PageTransitionType.SCALE,
|
||||||
|
duration: 0.2,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// 播放关闭动画
|
||||||
|
this.playSubPanelCloseAnimation(subPanel, config, () => {
|
||||||
|
// 清理映射
|
||||||
|
this.subPanelMapping.delete(subPanel);
|
||||||
|
this.subPanelAnimationConfigs.delete(subPanel);
|
||||||
|
|
||||||
|
// 销毁节点
|
||||||
|
const baseView = subPanel.getComponent(li_BaseView);
|
||||||
|
if (baseView) {
|
||||||
|
baseView.close();
|
||||||
|
} else {
|
||||||
|
subPanel.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
onAnimationComplete();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
onAnimationComplete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 统一的subPanel清理方法
|
* 统一的subPanel清理方法
|
||||||
* @param basePanel 主面板节点
|
* @param basePanel 主面板节点
|
||||||
@@ -252,13 +328,15 @@ export class NavigationManager {
|
|||||||
const defaultConfig: SubPanelAnimationConfig = {
|
const defaultConfig: SubPanelAnimationConfig = {
|
||||||
openAnimation: PageTransitionType.SCALE,
|
openAnimation: PageTransitionType.SCALE,
|
||||||
closeAnimation: PageTransitionType.SCALE,
|
closeAnimation: PageTransitionType.SCALE,
|
||||||
duration: 0.3
|
duration: 0.3,
|
||||||
};
|
};
|
||||||
const config = animationConfig || defaultConfig;
|
const config = animationConfig || defaultConfig;
|
||||||
|
|
||||||
const callback = (n: Node) => {
|
const callback = (n: Node) => {
|
||||||
if (!n || !n.isValid) {
|
if (!n || !n.isValid) {
|
||||||
console.error("[NavigationManager] openSubPanel: created panel is invalid");
|
console.error(
|
||||||
|
"[NavigationManager] openSubPanel: created panel is invalid"
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,10 +351,11 @@ export class NavigationManager {
|
|||||||
if (basePanelType) {
|
if (basePanelType) {
|
||||||
this.subPanelMapping.set(n, basePanelType);
|
this.subPanelMapping.set(n, basePanelType);
|
||||||
} else {
|
} else {
|
||||||
console.warn(`[NavigationManager] 无法确定basePanel类型: ${basePanel.name}`);
|
console.warn(
|
||||||
|
`[NavigationManager] 无法确定basePanel类型: ${basePanel.name}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 存储动画配置
|
// 存储动画配置
|
||||||
this.subPanelAnimationConfigs.set(n, config);
|
this.subPanelAnimationConfigs.set(n, config);
|
||||||
|
|
||||||
@@ -299,12 +378,16 @@ export class NavigationManager {
|
|||||||
force: boolean = false
|
force: boolean = false
|
||||||
): Node {
|
): Node {
|
||||||
if (!panelType) {
|
if (!panelType) {
|
||||||
console.error("[NavigationManager] switchToPanelWithTransition: panelType is invalid");
|
console.error(
|
||||||
|
"[NavigationManager] switchToPanelWithTransition: panelType is invalid"
|
||||||
|
);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.currentActivePanelType === panelType && !force) {
|
if (this.currentActivePanelType === panelType && !force) {
|
||||||
console.log(`[NavigationManager] Already on ${panelType}, skipping switch`);
|
console.log(
|
||||||
|
`[NavigationManager] Already on ${panelType}, skipping switch`
|
||||||
|
);
|
||||||
return this.currentActivePanel;
|
return this.currentActivePanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,8 +405,12 @@ export class NavigationManager {
|
|||||||
this.navigationPanel.showLoading?.();
|
this.navigationPanel.showLoading?.();
|
||||||
|
|
||||||
// 获取动画方向
|
// 获取动画方向
|
||||||
const hideDirection = this.getDirectionFromTransitionType(transitionConfig.outgoingTransition);
|
const hideDirection = this.getDirectionFromTransitionType(
|
||||||
const showDirection = this.getDirectionFromTransitionType(transitionConfig.incomingTransition);
|
transitionConfig.outgoingTransition
|
||||||
|
);
|
||||||
|
const showDirection = this.getDirectionFromTransitionType(
|
||||||
|
transitionConfig.incomingTransition
|
||||||
|
);
|
||||||
|
|
||||||
// 隐藏当前面板(包括子页面)
|
// 隐藏当前面板(包括子页面)
|
||||||
if (this.currentActivePanel && this.currentActivePanel.isValid) {
|
if (this.currentActivePanel && this.currentActivePanel.isValid) {
|
||||||
@@ -350,7 +437,9 @@ export class NavigationManager {
|
|||||||
/**
|
/**
|
||||||
* 将过渡类型转换为方向字符串
|
* 将过渡类型转换为方向字符串
|
||||||
*/
|
*/
|
||||||
private getDirectionFromTransitionType(transitionType: PageTransitionType): "left" | "right" | "up" | "down" {
|
private getDirectionFromTransitionType(
|
||||||
|
transitionType: PageTransitionType
|
||||||
|
): "left" | "right" | "up" | "down" {
|
||||||
switch (transitionType) {
|
switch (transitionType) {
|
||||||
case PageTransitionType.SLIDE_LEFT:
|
case PageTransitionType.SLIDE_LEFT:
|
||||||
return "left";
|
return "left";
|
||||||
@@ -368,7 +457,10 @@ export class NavigationManager {
|
|||||||
/**
|
/**
|
||||||
* 执行子面板打开动画
|
* 执行子面板打开动画
|
||||||
*/
|
*/
|
||||||
private playSubPanelOpenAnimation(panel: Node, config: SubPanelAnimationConfig): void {
|
private playSubPanelOpenAnimation(
|
||||||
|
panel: Node,
|
||||||
|
config: SubPanelAnimationConfig
|
||||||
|
): void {
|
||||||
if (!panel || !panel.isValid) {
|
if (!panel || !panel.isValid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -447,7 +539,11 @@ export class NavigationManager {
|
|||||||
* @param data 传递的数据
|
* @param data 传递的数据
|
||||||
* @param callback 可选的回调函数
|
* @param callback 可选的回调函数
|
||||||
*/
|
*/
|
||||||
public openPopupPanel(panelName: string, data: any = null, callback?: Function): void {
|
public openPopupPanel(
|
||||||
|
panelName: string,
|
||||||
|
data: any = null,
|
||||||
|
callback?: Function
|
||||||
|
): void {
|
||||||
if (!panelName) {
|
if (!panelName) {
|
||||||
console.error("[NavigationManager] openPopupPanel: panelName is empty");
|
console.error("[NavigationManager] openPopupPanel: panelName is empty");
|
||||||
return;
|
return;
|
||||||
@@ -455,13 +551,17 @@ export class NavigationManager {
|
|||||||
|
|
||||||
const popupCallback = (panel: Node) => {
|
const popupCallback = (panel: Node) => {
|
||||||
if (!panel || !panel.isValid) {
|
if (!panel || !panel.isValid) {
|
||||||
console.error("[NavigationManager] openPopupPanel: created panel is invalid");
|
console.error(
|
||||||
|
"[NavigationManager] openPopupPanel: created panel is invalid"
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将弹窗添加到管理集合中
|
// 将弹窗添加到管理集合中
|
||||||
this.popupPanels.add(panel);
|
this.popupPanels.add(panel);
|
||||||
console.log(`[NavigationManager] Popup panel opened: ${panelName}, total popups: ${this.popupPanels.size}`);
|
console.log(
|
||||||
|
`[NavigationManager] Popup panel opened: ${panelName}, total popups: ${this.popupPanels.size}`
|
||||||
|
);
|
||||||
|
|
||||||
if (callback) {
|
if (callback) {
|
||||||
callback(panel);
|
callback(panel);
|
||||||
@@ -484,7 +584,9 @@ export class NavigationManager {
|
|||||||
// 从弹窗管理集合中移除
|
// 从弹窗管理集合中移除
|
||||||
if (this.popupPanels.has(panel)) {
|
if (this.popupPanels.has(panel)) {
|
||||||
this.popupPanels.delete(panel);
|
this.popupPanels.delete(panel);
|
||||||
console.log(`[NavigationManager] Popup panel closed: ${panel.name}, total popups: ${this.popupPanels.size}`);
|
console.log(
|
||||||
|
`[NavigationManager] Popup panel closed: ${panel.name}, total popups: ${this.popupPanels.size}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 关闭面板
|
// 关闭面板
|
||||||
@@ -508,7 +610,9 @@ export class NavigationManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`[NavigationManager] Closing all popups, count: ${this.popupPanels.size}`);
|
console.log(
|
||||||
|
`[NavigationManager] Closing all popups, count: ${this.popupPanels.size}`
|
||||||
|
);
|
||||||
|
|
||||||
// 复制Set以避免在迭代过程中修改
|
// 复制Set以避免在迭代过程中修改
|
||||||
const popupPanelsToClose = Array.from(this.popupPanels);
|
const popupPanelsToClose = Array.from(this.popupPanels);
|
||||||
@@ -522,9 +626,14 @@ export class NavigationManager {
|
|||||||
// 确保清空集合
|
// 确保清空集合
|
||||||
this.popupPanels.clear();
|
this.popupPanels.clear();
|
||||||
}
|
}
|
||||||
public closeSubPanel(panel: Node | li_BaseView, animationConfig?: SubPanelAnimationConfig) {
|
public closeSubPanel(
|
||||||
|
panel: Node | li_BaseView,
|
||||||
|
animationConfig?: SubPanelAnimationConfig
|
||||||
|
) {
|
||||||
if (!panel) {
|
if (!panel) {
|
||||||
console.warn("[NavigationManager] closeSubPanel: panel is null or undefined");
|
console.warn(
|
||||||
|
"[NavigationManager] closeSubPanel: panel is null or undefined"
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -549,7 +658,7 @@ export class NavigationManager {
|
|||||||
config = {
|
config = {
|
||||||
openAnimation: PageTransitionType.SCALE,
|
openAnimation: PageTransitionType.SCALE,
|
||||||
closeAnimation: PageTransitionType.SCALE,
|
closeAnimation: PageTransitionType.SCALE,
|
||||||
duration: 0.3
|
duration: 0.3,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -590,7 +699,9 @@ export class NavigationManager {
|
|||||||
this.subPanelDic.delete(baseNode);
|
this.subPanelDic.delete(baseNode);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.warn(`[NavigationManager] ${panelNode.name} 不在子页面列表中`);
|
console.warn(
|
||||||
|
`[NavigationManager] ${panelNode.name} 不在子页面列表中`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -636,7 +747,9 @@ export class NavigationManager {
|
|||||||
case "PersonalPanel":
|
case "PersonalPanel":
|
||||||
return PanelType.PERSONAL;
|
return PanelType.PERSONAL;
|
||||||
default:
|
default:
|
||||||
console.warn(`[NavigationManager] Unknown panel type for node: ${node.name}`);
|
console.warn(
|
||||||
|
`[NavigationManager] Unknown panel type for node: ${node.name}`
|
||||||
|
);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -713,18 +826,22 @@ export class NavigationManager {
|
|||||||
direction: "left" | "right" | "up" | "down",
|
direction: "left" | "right" | "up" | "down",
|
||||||
callback?: Function
|
callback?: Function
|
||||||
) {
|
) {
|
||||||
if (!panel || !panel.isValid || !panel.active) {
|
if (!panel || !panel.isValid) {
|
||||||
callback && callback();
|
callback && callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 同时开始子面板的关闭动画
|
||||||
|
this.clearSubPanelsWithAnimation(panel);
|
||||||
|
|
||||||
|
if (!panel.active) panel.active = true;
|
||||||
|
|
||||||
const animationCallback = () => {
|
const animationCallback = () => {
|
||||||
panel.active = false;
|
panel.active = false;
|
||||||
// 使用统一的subPanel清理方法
|
|
||||||
this.clearSubPanels(panel, true);
|
|
||||||
callback && callback();
|
callback && callback();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 主面板动画
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case "left":
|
case "left":
|
||||||
UITransitionHelper.slideOutToLeft(panel, 0.3, animationCallback);
|
UITransitionHelper.slideOutToLeft(panel, 0.3, animationCallback);
|
||||||
|
|||||||
@@ -92,18 +92,6 @@ export class ChatContentsLayout extends Component {
|
|||||||
playerBubble.node.active = true;
|
playerBubble.node.active = true;
|
||||||
playerBubble.updateBubbleContent(dialog.content, true);
|
playerBubble.updateBubbleContent(dialog.content, true);
|
||||||
this.bubbles.push(playerBubble);
|
this.bubbles.push(playerBubble);
|
||||||
|
|
||||||
// 创建等待回复气泡(插入到首位,显示在玩家消息上面)
|
|
||||||
// this.waitingBubble = this.createOrGetBubble(false);
|
|
||||||
// this.waitingBubble.node.active = true;
|
|
||||||
// this.waitingBubble.updateBubbleContent("...", false, undefined, true);
|
|
||||||
// this.waitingBubble.node.setSiblingIndex(0);
|
|
||||||
// this.bubbles.push(this.waitingBubble);
|
|
||||||
this.node.position = Vec3.ZERO;
|
|
||||||
// 滚动到底部(等待下一帧Layout更新完成)
|
|
||||||
this.scheduleOnce(() => {
|
|
||||||
this.scrollView.scrollToBottom();
|
|
||||||
}, 0);
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 更新AI回复的对话
|
* 更新AI回复的对话
|
||||||
@@ -120,6 +108,12 @@ export class ChatContentsLayout extends Component {
|
|||||||
|
|
||||||
// 逐个添加AI对话,带延时
|
// 逐个添加AI对话,带延时
|
||||||
this.addAIDialogsWithDelay(dialogs, 0);
|
this.addAIDialogsWithDelay(dialogs, 0);
|
||||||
|
|
||||||
|
this.node.position = Vec3.ZERO;
|
||||||
|
// 滚动到底部(等待下一帧Layout更新完成)
|
||||||
|
this.scheduleOnce(() => {
|
||||||
|
this.scrollView.scrollToBottom();
|
||||||
|
}, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -84,6 +84,13 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
|
|||||||
|
|
||||||
targetSize;
|
targetSize;
|
||||||
videoAreaPos;
|
videoAreaPos;
|
||||||
|
|
||||||
|
base: Node;
|
||||||
|
|
||||||
|
openUIDataCT(data: any) {
|
||||||
|
this.base = data.base;
|
||||||
|
}
|
||||||
|
|
||||||
onLoadCT() {
|
onLoadCT() {
|
||||||
Utils.parseNode(this.node, this._nodeTab);
|
Utils.parseNode(this.node, this._nodeTab);
|
||||||
|
|
||||||
@@ -395,8 +402,12 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
|
|||||||
protected onEnable(): void {
|
protected onEnable(): void {
|
||||||
if (!this.manager) this.manager = DialogManager.getInstance();
|
if (!this.manager) this.manager = DialogManager.getInstance();
|
||||||
|
|
||||||
|
this.base.active = false;
|
||||||
this.refresh();
|
this.refresh();
|
||||||
}
|
}
|
||||||
|
protected onDisable(): void {
|
||||||
|
this.base.active = true;
|
||||||
|
}
|
||||||
|
|
||||||
isWaiting: boolean = false;
|
isWaiting: boolean = false;
|
||||||
public async OnClickSend() {
|
public async OnClickSend() {
|
||||||
@@ -501,8 +512,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
returnBtn() {
|
returnBtn() {
|
||||||
// Navigate back to GirlDetailPanel with current girlId using smooth transition
|
NavigationManager.Instance.closeSubPanel(this);
|
||||||
NavigationManager.Instance.switchToPanel(PanelType.GIRL_DETAIL);
|
|
||||||
}
|
}
|
||||||
onClickRecord() {
|
onClickRecord() {
|
||||||
NavigationManager.Instance.openPopupPanel("RecordPanel", this.id);
|
NavigationManager.Instance.openPopupPanel("RecordPanel", this.id);
|
||||||
|
|||||||
@@ -311,17 +311,15 @@ export class GirlDetailPanel extends li_BaseView {
|
|||||||
|
|
||||||
OnClickChatBtn() {
|
OnClickChatBtn() {
|
||||||
// 使用带过渡动画的导航方法
|
// 使用带过渡动画的导航方法
|
||||||
NavigationManager.Instance.switchToPanel(PanelType.PAST_GIRL_LIST);
|
NavigationManager.Instance.switchToPanel(
|
||||||
|
PanelType.PAST_GIRL_LIST,
|
||||||
// 延迟打开 ChatPanel,确保 PastGirlListPanel 已经完全加载
|
false,
|
||||||
this.scheduleOnce(() => {
|
(base) => {
|
||||||
// 获取当前活动的 PastGirlListPanel 节点
|
const chatData = { girlId: this.id ,base:base};
|
||||||
const baseNode = NavigationManager.Instance.getCurrentActivePanelNode();
|
NavigationManager.Instance.openSubPanel("ChatPanel", base, chatData);
|
||||||
if (baseNode) {
|
|
||||||
const chatData = { girlId: this.id };
|
|
||||||
NavigationManager.Instance.openSubPanel("ChatPanel", baseNode, chatData);
|
|
||||||
}
|
}
|
||||||
}, 0.5); // 延迟 0.5 秒,确保动画完成
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
returnBtn() {
|
returnBtn() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { _decorator, Component, Node, instantiate } from "cc";
|
import { _decorator, Component, Node, instantiate, tween, Vec3 } from "cc";
|
||||||
import li_BaseView from "db://assets/Scripts/Main/Common/li_BaseView";
|
import li_BaseView from "db://assets/Scripts/Main/Common/li_BaseView";
|
||||||
import Utils from "db://assets/Scripts/Main/Common/Utils";
|
import Utils from "db://assets/Scripts/Main/Common/Utils";
|
||||||
import { GButton } from "db://assets/Scripts/Main/Common/GButton";
|
import { GButton } from "db://assets/Scripts/Main/Common/GButton";
|
||||||
@@ -8,6 +8,7 @@ import { DataManager, DataId } from "../../data/DataManager";
|
|||||||
import { GirlData } from "../../data/GirlData";
|
import { GirlData } from "../../data/GirlData";
|
||||||
import proto from "db://assets/Scripts/proto/proto.pb.js";
|
import proto from "db://assets/Scripts/proto/proto.pb.js";
|
||||||
import { NavigationManager, PanelType } from "../../manager/NavigationManager";
|
import { NavigationManager, PanelType } from "../../manager/NavigationManager";
|
||||||
|
import { UITransitionHelper } from "../../utils/UITransitionHelper";
|
||||||
|
|
||||||
const { ccclass, property } = _decorator;
|
const { ccclass, property } = _decorator;
|
||||||
|
|
||||||
@@ -99,7 +100,8 @@ export class GirlListPanel extends li_BaseView {
|
|||||||
girlData.setGirlList(category.toString(), res.data);
|
girlData.setGirlList(category.toString(), res.data);
|
||||||
// 根据数据,刷新界面
|
// 根据数据,刷新界面
|
||||||
const allId = girlData.getGirlIds(category.toString());
|
const allId = girlData.getGirlIds(category.toString());
|
||||||
for (let id of allId) {
|
for (let i = 0; i < allId.length; i++) {
|
||||||
|
let id = allId[i];
|
||||||
let item = this.getItemFromPool();
|
let item = this.getItemFromPool();
|
||||||
item.refreshData(category, id, this.node);
|
item.refreshData(category, id, this.node);
|
||||||
item.node.active = true;
|
item.node.active = true;
|
||||||
@@ -113,6 +115,28 @@ export class GirlListPanel extends li_BaseView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private addSlideInAnimation(itemNode: Node, index: number) {
|
||||||
|
// 保存节点的目标位置
|
||||||
|
const targetPosition = itemNode.getPosition();
|
||||||
|
|
||||||
|
// 设置初始位置为屏幕右侧外(偏移300像素)
|
||||||
|
const startPosition = new Vec3(
|
||||||
|
targetPosition.x + 300,
|
||||||
|
targetPosition.y,
|
||||||
|
targetPosition.z
|
||||||
|
);
|
||||||
|
itemNode.setPosition(startPosition);
|
||||||
|
|
||||||
|
// 添加递进延时,每个item延迟0.05秒
|
||||||
|
const delay = index * 0.05;
|
||||||
|
|
||||||
|
// 执行滑入动画
|
||||||
|
tween(itemNode)
|
||||||
|
.delay(delay)
|
||||||
|
.to(0.4, { position: targetPosition }, { easing: "cubicOut" })
|
||||||
|
.start();
|
||||||
|
}
|
||||||
|
|
||||||
hide() {
|
hide() {
|
||||||
this.node.active = false;
|
this.node.active = false;
|
||||||
}
|
}
|
||||||
@@ -121,8 +145,7 @@ export class GirlListPanel extends li_BaseView {
|
|||||||
GButton.BandClick(this._nodeTab.ReturnBtn, this.Return, this);
|
GButton.BandClick(this._nodeTab.ReturnBtn, this.Return, this);
|
||||||
}
|
}
|
||||||
Return() {
|
Return() {
|
||||||
// 直接关闭,不需要动画
|
NavigationManager.Instance.closeSubPanel(this);
|
||||||
this.node.active = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onDestroy() {
|
onDestroy() {
|
||||||
@@ -141,16 +164,5 @@ export class GirlListPanel extends li_BaseView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.cache = [];
|
this.cache = [];
|
||||||
|
|
||||||
// 清理 content 中所有的 GirlListItem 节点
|
|
||||||
for (let i = this.content.children.length - 1; i >= 0; i--) {
|
|
||||||
let child = this.content.children[i];
|
|
||||||
if (child !== this.itemInst.node) {
|
|
||||||
let item = child.getComponent(GirlListItem);
|
|
||||||
if (item) {
|
|
||||||
child.destroy();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export class NavigationPanel extends li_BaseView {
|
|||||||
NavigationManager.Instance.registerNavigationPanel(this);
|
NavigationManager.Instance.registerNavigationPanel(this);
|
||||||
|
|
||||||
this.registerListener();
|
this.registerListener();
|
||||||
this.updateButtonStates(PanelType.PAST_GIRL_LIST);
|
this.updateButtonStates(PanelType.THEME);
|
||||||
|
|
||||||
// 初次打开时通过NavigationManager切换到主题面板
|
// 初次打开时通过NavigationManager切换到主题面板
|
||||||
this.initializeFirstPanel();
|
this.initializeFirstPanel();
|
||||||
@@ -101,13 +101,15 @@ export class NavigationPanel extends li_BaseView {
|
|||||||
this.girlDetailBtn.setFocus(
|
this.girlDetailBtn.setFocus(
|
||||||
this.currentActivePanel === PanelType.GIRL_DETAIL
|
this.currentActivePanel === PanelType.GIRL_DETAIL
|
||||||
);
|
);
|
||||||
this.pastGirlListBtn.setFocus(this.currentActivePanel === PanelType.PAST_GIRL_LIST);
|
this.pastGirlListBtn.setFocus(
|
||||||
|
this.currentActivePanel === PanelType.PAST_GIRL_LIST
|
||||||
|
);
|
||||||
this.settingBtn.setFocus(this.currentActivePanel === PanelType.PERSONAL);
|
this.settingBtn.setFocus(this.currentActivePanel === PanelType.PERSONAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
private initializeFirstPanel() {
|
private initializeFirstPanel() {
|
||||||
// 初次打开时通过NavigationManager切换到历史女孩列表面板
|
// 初次打开时通过NavigationManager切换到历史女孩列表面板
|
||||||
NavigationManager.Instance.switchToPanel(PanelType.PAST_GIRL_LIST, true);
|
NavigationManager.Instance.switchToPanel(PanelType.THEME, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public showPanel() {
|
public showPanel() {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { GButton } from "db://assets/Scripts/Main/Common/GButton";
|
|||||||
import { PastGirlListItem } from "../../uiitems/PastGirlListItem";
|
import { PastGirlListItem } from "../../uiitems/PastGirlListItem";
|
||||||
import { DataManager, DataId } from "../../data/DataManager";
|
import { DataManager, DataId } from "../../data/DataManager";
|
||||||
import { GirlData } from "../../data/GirlData";
|
import { GirlData } from "../../data/GirlData";
|
||||||
|
import { ChatHistoryManager } from "../../manager/ChatHistoryManager";
|
||||||
|
|
||||||
const { ccclass, property } = _decorator;
|
const { ccclass, property } = _decorator;
|
||||||
|
|
||||||
@@ -68,13 +69,9 @@ export class PastGirlListPanel extends li_BaseView {
|
|||||||
// TODO: 实现获取已解锁女孩列表的逻辑
|
// TODO: 实现获取已解锁女孩列表的逻辑
|
||||||
// 这个方法需要遍历所有分类,找出 isRelease === true 的女孩
|
// 这个方法需要遍历所有分类,找出 isRelease === true 的女孩
|
||||||
private getUnlockedGirls(): number[] {
|
private getUnlockedGirls(): number[] {
|
||||||
// TODO: 实现获取已解锁女孩列表逻辑
|
const GirlData = DataManager.I.getDataById<GirlData>(DataId.Girl);
|
||||||
// 需要实现的逻辑:
|
const allids = GirlData.getAllReleaseGirlIds();
|
||||||
// 1. 遍历 GirlData 中的所有分类
|
return allids;
|
||||||
// 2. 对每个分类中的每个女孩检查 getIsRelease 状态
|
|
||||||
// 3. 返回所有已解锁女孩的 {category, id} 列表
|
|
||||||
console.log("TODO: 实现获取已解锁女孩列表逻辑");
|
|
||||||
return [10001, 10002];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh() {
|
refresh() {
|
||||||
@@ -90,10 +87,22 @@ export class PastGirlListPanel extends li_BaseView {
|
|||||||
// 获取已解锁女孩列表
|
// 获取已解锁女孩列表
|
||||||
const ids = this.getUnlockedGirls();
|
const ids = this.getUnlockedGirls();
|
||||||
|
|
||||||
// 根据数据,刷新界面
|
// 创建带时间戳的数组用于排序
|
||||||
|
const girlsWithTime: {id: number, lastTime: number}[] = [];
|
||||||
|
|
||||||
|
// 收集每个女孩的最后聊天时间
|
||||||
for (let id of ids) {
|
for (let id of ids) {
|
||||||
|
const lastTime = ChatHistoryManager.Instance.getLastChatTime(id) || 0;
|
||||||
|
girlsWithTime.push({id, lastTime});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按最后聊天时间降序排序(最近的在前)
|
||||||
|
girlsWithTime.sort((a, b) => b.lastTime - a.lastTime);
|
||||||
|
|
||||||
|
// 根据排序后的数据刷新界面
|
||||||
|
for (let girlData of girlsWithTime) {
|
||||||
let item = this.getItemFromPool();
|
let item = this.getItemFromPool();
|
||||||
item.refreshData(id, this.node);
|
item.refreshData(girlData.id, this.node);
|
||||||
item.node.active = true;
|
item.node.active = true;
|
||||||
this.cache.push(item);
|
this.cache.push(item);
|
||||||
|
|
||||||
|
|||||||
@@ -120,8 +120,7 @@ export class PurchasePanel extends li_BaseView {
|
|||||||
GButton.BandClick(
|
GButton.BandClick(
|
||||||
this._nodeTab.ReturnBtn,
|
this._nodeTab.ReturnBtn,
|
||||||
() => {
|
() => {
|
||||||
this.onClose();
|
NavigationManager.Instance.closeSubPanel(this);
|
||||||
// NavigationPanel 始终显示,不需要显示 DefaultView
|
|
||||||
},
|
},
|
||||||
this
|
this
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import LanguageUtils, {
|
|||||||
} from "../../../Main/Common/LanguageUtils";
|
} from "../../../Main/Common/LanguageUtils";
|
||||||
import AudioManager from "../../../Main/Manager/AudioManager";
|
import AudioManager from "../../../Main/Manager/AudioManager";
|
||||||
import PlayerDataManager from "../../../Main/Manager/PlayerDataManager";
|
import PlayerDataManager from "../../../Main/Manager/PlayerDataManager";
|
||||||
|
import { NavigationManager } from "../../manager/NavigationManager";
|
||||||
const { ccclass, property } = _decorator;
|
const { ccclass, property } = _decorator;
|
||||||
|
|
||||||
interface LanguageButton {
|
interface LanguageButton {
|
||||||
@@ -58,8 +59,6 @@ export class SettingPanel extends li_BaseView {
|
|||||||
this.currentSelectedLang = LanguageUtils.CurrentLanguage;
|
this.currentSelectedLang = LanguageUtils.CurrentLanguage;
|
||||||
this.updateSelection();
|
this.updateSelection();
|
||||||
this.updateAudioButtonStates();
|
this.updateAudioButtonStates();
|
||||||
|
|
||||||
this.playEnterAnimation();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private music_on: Node;
|
private music_on: Node;
|
||||||
@@ -163,7 +162,7 @@ export class SettingPanel extends li_BaseView {
|
|||||||
// GButton.BandClick(this._nodeTab.Language1, this.switchToEn, this);
|
// GButton.BandClick(this._nodeTab.Language1, this.switchToEn, this);
|
||||||
// GButton.BandClick(this._nodeTab.Language2, this.swithcToHi, this);
|
// GButton.BandClick(this._nodeTab.Language2, this.swithcToHi, this);
|
||||||
|
|
||||||
GButton.BandClick(this._nodeTab.closeBtn, this.close, this);
|
GButton.BandClick(this._nodeTab.closeBtn, this.onClickClose, this);
|
||||||
|
|
||||||
this.languageButtons.forEach((langBtn) => {
|
this.languageButtons.forEach((langBtn) => {
|
||||||
if (langBtn.button) {
|
if (langBtn.button) {
|
||||||
@@ -273,23 +272,7 @@ export class SettingPanel extends li_BaseView {
|
|||||||
.start();
|
.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private playEnterAnimation() {
|
onClickClose() {
|
||||||
if (this.panelBg) {
|
NavigationManager.Instance.closeSubPanel(this);
|
||||||
this.panelBg.scale = new Vec3(0.8, 0.8, 1);
|
|
||||||
tween(this.panelBg)
|
|
||||||
.to(0.3, { scale: new Vec3(1, 1, 1) }, { easing: "backOut" })
|
|
||||||
.start();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private playExitAnimation(callback: () => void) {
|
|
||||||
if (this.panelBg) {
|
|
||||||
tween(this.panelBg)
|
|
||||||
.to(0.2, { scale: new Vec3(0.8, 0.8, 1) }, { easing: "backIn" })
|
|
||||||
.call(callback)
|
|
||||||
.start();
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ export class PastGirlListItem extends Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshData(girlId: number, baseNode: Node) {
|
refreshData(girlId: number, baseNode: Node):number {
|
||||||
if (!this.stars) {
|
if (!this.stars) {
|
||||||
this.stars = this.starParent.getComponentsInChildren(Sprite);
|
this.stars = this.starParent.getComponentsInChildren(Sprite);
|
||||||
}
|
}
|
||||||
@@ -118,7 +118,7 @@ export class PastGirlListItem extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 显示最近聊天时间
|
// 显示最近聊天时间
|
||||||
this.updateLastChatTime();
|
return this.updateLastChatTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
private getLastChatTime(id: number): number | null {
|
private getLastChatTime(id: number): number | null {
|
||||||
@@ -126,9 +126,10 @@ export class PastGirlListItem extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 更新最近聊天时间显示
|
// 更新最近聊天时间显示
|
||||||
private updateLastChatTime() {
|
private updateLastChatTime():number {
|
||||||
const lastTime = this.getLastChatTime(this.id);
|
const lastTime = this.getLastChatTime(this.id);
|
||||||
this.lastChatTime.string = Utils.formatChatTime(lastTime);
|
this.lastChatTime.string = Utils.formatChatTime(lastTime);
|
||||||
|
return lastTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
reset() {
|
reset() {
|
||||||
|
|||||||
@@ -449,14 +449,7 @@ export class UITransitionHelper {
|
|||||||
|
|
||||||
// 执行缩放进入动画
|
// 执行缩放进入动画
|
||||||
tween(node)
|
tween(node)
|
||||||
.parallel(
|
.to(duration, { scale: new Vec3(1, 1, 1) }, { easing: "backOut" })
|
||||||
tween().to(
|
|
||||||
duration,
|
|
||||||
{ scale: new Vec3(1, 1, 1) },
|
|
||||||
{ easing: "backOut" }
|
|
||||||
),
|
|
||||||
tween().to(duration * 0.8, { opacity: 255 }, { easing: "sineOut" })
|
|
||||||
)
|
|
||||||
.call(() => {
|
.call(() => {
|
||||||
if (callback) {
|
if (callback) {
|
||||||
callback();
|
callback();
|
||||||
@@ -484,14 +477,7 @@ export class UITransitionHelper {
|
|||||||
|
|
||||||
// 执行缩放退出动画
|
// 执行缩放退出动画
|
||||||
tween(node)
|
tween(node)
|
||||||
.parallel(
|
.to(duration, { scale: new Vec3(0, 0, 1) }, { easing: "backIn" })
|
||||||
tween().to(
|
|
||||||
duration,
|
|
||||||
{ scale: new Vec3(0, 0, 1) },
|
|
||||||
{ easing: "backIn" }
|
|
||||||
),
|
|
||||||
tween().to(duration * 0.6, { opacity: 0 }, { easing: "sineOut" })
|
|
||||||
)
|
|
||||||
.call(() => {
|
.call(() => {
|
||||||
if (callback) {
|
if (callback) {
|
||||||
callback();
|
callback();
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -25,20 +25,20 @@
|
|||||||
"_active": true,
|
"_active": true,
|
||||||
"_components": [
|
"_components": [
|
||||||
{
|
{
|
||||||
"__id__": 258
|
"__id__": 257
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 260
|
"__id__": 259
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 262
|
"__id__": 261
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 264
|
"__id__": 263
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"_prefab": {
|
"_prefab": {
|
||||||
"__id__": 266
|
"__id__": 265
|
||||||
},
|
},
|
||||||
"_lpos": {
|
"_lpos": {
|
||||||
"__type__": "cc.Vec3",
|
"__type__": "cc.Vec3",
|
||||||
@@ -88,17 +88,17 @@
|
|||||||
"_active": true,
|
"_active": true,
|
||||||
"_components": [
|
"_components": [
|
||||||
{
|
{
|
||||||
"__id__": 251
|
"__id__": 250
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 253
|
"__id__": 252
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 255
|
"__id__": 254
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"_prefab": {
|
"_prefab": {
|
||||||
"__id__": 257
|
"__id__": 256
|
||||||
},
|
},
|
||||||
"_lpos": {
|
"_lpos": {
|
||||||
"__type__": "cc.Vec3",
|
"__type__": "cc.Vec3",
|
||||||
@@ -4952,23 +4952,23 @@
|
|||||||
"__id__": 219
|
"__id__": 219
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 234
|
"__id__": 233
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"_active": true,
|
"_active": true,
|
||||||
"_components": [
|
"_components": [
|
||||||
{
|
{
|
||||||
"__id__": 244
|
"__id__": 243
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 246
|
"__id__": 245
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 248
|
"__id__": 247
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"_prefab": {
|
"_prefab": {
|
||||||
"__id__": 250
|
"__id__": 249
|
||||||
},
|
},
|
||||||
"_lpos": {
|
"_lpos": {
|
||||||
"__type__": "cc.Vec3",
|
"__type__": "cc.Vec3",
|
||||||
@@ -5012,7 +5012,7 @@
|
|||||||
"__id__": 220
|
"__id__": 220
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"_active": true,
|
"_active": false,
|
||||||
"_components": [
|
"_components": [
|
||||||
{
|
{
|
||||||
"__id__": 226
|
"__id__": 226
|
||||||
@@ -5021,11 +5021,11 @@
|
|||||||
"__id__": 228
|
"__id__": 228
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 231
|
"__id__": 230
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"_prefab": {
|
"_prefab": {
|
||||||
"__id__": 233
|
"__id__": 232
|
||||||
},
|
},
|
||||||
"_lpos": {
|
"_lpos": {
|
||||||
"__type__": "cc.Vec3",
|
"__type__": "cc.Vec3",
|
||||||
@@ -5188,8 +5188,6 @@
|
|||||||
"__id__": 0
|
"__id__": 0
|
||||||
},
|
},
|
||||||
"fileId": "9aCRghG1lBCa+25qEAugAS",
|
"fileId": "9aCRghG1lBCa+25qEAugAS",
|
||||||
"instance": null,
|
|
||||||
"targetOverrides": null,
|
|
||||||
"nestedPrefabInstanceRoots": null
|
"nestedPrefabInstanceRoots": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -5232,11 +5230,7 @@
|
|||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 229
|
"__id__": 229
|
||||||
},
|
},
|
||||||
"clickEvents": [
|
"clickEvents": [],
|
||||||
{
|
|
||||||
"__id__": 230
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"_interactable": true,
|
"_interactable": true,
|
||||||
"_transition": 1,
|
"_transition": 1,
|
||||||
"_normalColor": {
|
"_normalColor": {
|
||||||
@@ -5282,16 +5276,6 @@
|
|||||||
"__type__": "cc.CompPrefabInfo",
|
"__type__": "cc.CompPrefabInfo",
|
||||||
"fileId": "4baNYSNShFU444oyMjbAaV"
|
"fileId": "4baNYSNShFU444oyMjbAaV"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"__type__": "cc.ClickEvent",
|
|
||||||
"target": {
|
|
||||||
"__id__": 1
|
|
||||||
},
|
|
||||||
"component": "",
|
|
||||||
"_componentId": "ecf27717xFOIo8F0ultYqJq",
|
|
||||||
"handler": "Return",
|
|
||||||
"customEventData": ""
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"__type__": "cc.Widget",
|
"__type__": "cc.Widget",
|
||||||
"_name": "",
|
"_name": "",
|
||||||
@@ -5302,7 +5286,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 232
|
"__id__": 231
|
||||||
},
|
},
|
||||||
"_alignFlags": 10,
|
"_alignFlags": 10,
|
||||||
"_target": null,
|
"_target": null,
|
||||||
@@ -5353,20 +5337,20 @@
|
|||||||
"_active": true,
|
"_active": true,
|
||||||
"_components": [
|
"_components": [
|
||||||
{
|
{
|
||||||
"__id__": 235
|
"__id__": 234
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 237
|
"__id__": 236
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 239
|
"__id__": 238
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 241
|
"__id__": 240
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"_prefab": {
|
"_prefab": {
|
||||||
"__id__": 243
|
"__id__": 242
|
||||||
},
|
},
|
||||||
"_lpos": {
|
"_lpos": {
|
||||||
"__type__": "cc.Vec3",
|
"__type__": "cc.Vec3",
|
||||||
@@ -5403,11 +5387,11 @@
|
|||||||
"_objFlags": 0,
|
"_objFlags": 0,
|
||||||
"__editorExtras__": {},
|
"__editorExtras__": {},
|
||||||
"node": {
|
"node": {
|
||||||
"__id__": 234
|
"__id__": 233
|
||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 236
|
"__id__": 235
|
||||||
},
|
},
|
||||||
"_contentSize": {
|
"_contentSize": {
|
||||||
"__type__": "cc.Size",
|
"__type__": "cc.Size",
|
||||||
@@ -5431,11 +5415,11 @@
|
|||||||
"_objFlags": 0,
|
"_objFlags": 0,
|
||||||
"__editorExtras__": {},
|
"__editorExtras__": {},
|
||||||
"node": {
|
"node": {
|
||||||
"__id__": 234
|
"__id__": 233
|
||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 238
|
"__id__": 237
|
||||||
},
|
},
|
||||||
"_customMaterial": null,
|
"_customMaterial": null,
|
||||||
"_srcBlendFactor": 2,
|
"_srcBlendFactor": 2,
|
||||||
@@ -5502,11 +5486,11 @@
|
|||||||
"_objFlags": 0,
|
"_objFlags": 0,
|
||||||
"__editorExtras__": {},
|
"__editorExtras__": {},
|
||||||
"node": {
|
"node": {
|
||||||
"__id__": 234
|
"__id__": 233
|
||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 240
|
"__id__": 239
|
||||||
},
|
},
|
||||||
"_alignFlags": 18,
|
"_alignFlags": 18,
|
||||||
"_target": null,
|
"_target": null,
|
||||||
@@ -5538,11 +5522,11 @@
|
|||||||
"_objFlags": 0,
|
"_objFlags": 0,
|
||||||
"__editorExtras__": {},
|
"__editorExtras__": {},
|
||||||
"node": {
|
"node": {
|
||||||
"__id__": 234
|
"__id__": 233
|
||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 242
|
"__id__": 241
|
||||||
},
|
},
|
||||||
"languageKey": "girllistpanel.title",
|
"languageKey": "girllistpanel.title",
|
||||||
"defaultText": "",
|
"defaultText": "",
|
||||||
@@ -5576,7 +5560,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 245
|
"__id__": 244
|
||||||
},
|
},
|
||||||
"_contentSize": {
|
"_contentSize": {
|
||||||
"__type__": "cc.Size",
|
"__type__": "cc.Size",
|
||||||
@@ -5604,7 +5588,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 247
|
"__id__": 246
|
||||||
},
|
},
|
||||||
"_customMaterial": null,
|
"_customMaterial": null,
|
||||||
"_srcBlendFactor": 2,
|
"_srcBlendFactor": 2,
|
||||||
@@ -5649,7 +5633,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 249
|
"__id__": 248
|
||||||
},
|
},
|
||||||
"_alignFlags": 41,
|
"_alignFlags": 41,
|
||||||
"_target": null,
|
"_target": null,
|
||||||
@@ -5698,7 +5682,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 252
|
"__id__": 251
|
||||||
},
|
},
|
||||||
"_contentSize": {
|
"_contentSize": {
|
||||||
"__type__": "cc.Size",
|
"__type__": "cc.Size",
|
||||||
@@ -5726,7 +5710,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 254
|
"__id__": 253
|
||||||
},
|
},
|
||||||
"_customMaterial": null,
|
"_customMaterial": null,
|
||||||
"_srcBlendFactor": 2,
|
"_srcBlendFactor": 2,
|
||||||
@@ -5771,7 +5755,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 256
|
"__id__": 255
|
||||||
},
|
},
|
||||||
"_alignFlags": 45,
|
"_alignFlags": 45,
|
||||||
"_target": null,
|
"_target": null,
|
||||||
@@ -5820,7 +5804,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 259
|
"__id__": 258
|
||||||
},
|
},
|
||||||
"_contentSize": {
|
"_contentSize": {
|
||||||
"__type__": "cc.Size",
|
"__type__": "cc.Size",
|
||||||
@@ -5848,7 +5832,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 261
|
"__id__": 260
|
||||||
},
|
},
|
||||||
"_alignFlags": 45,
|
"_alignFlags": 45,
|
||||||
"_target": null,
|
"_target": null,
|
||||||
@@ -5884,7 +5868,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 263
|
"__id__": 262
|
||||||
},
|
},
|
||||||
"_id": ""
|
"_id": ""
|
||||||
},
|
},
|
||||||
@@ -5902,7 +5886,7 @@
|
|||||||
},
|
},
|
||||||
"_enabled": true,
|
"_enabled": true,
|
||||||
"__prefab": {
|
"__prefab": {
|
||||||
"__id__": 265
|
"__id__": 264
|
||||||
},
|
},
|
||||||
"m_rootNode": null,
|
"m_rootNode": null,
|
||||||
"_id": ""
|
"_id": ""
|
||||||
|
|||||||
@@ -88,43 +88,37 @@
|
|||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
"interpolationMode": 0,
|
"interpolationMode": 0,
|
||||||
"tangentWeightMode": 0,
|
"tangentWeightMode": 0,
|
||||||
"value": -262.56298828125,
|
"value": -250,
|
||||||
"rightTangent": 0,
|
"rightTangent": 0,
|
||||||
"rightTangentWeight": 1,
|
"rightTangentWeight": 1,
|
||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
"interpolationMode": 0,
|
"interpolationMode": 0,
|
||||||
"tangentWeightMode": 0,
|
"tangentWeightMode": 0,
|
||||||
"value": -262.56298828125,
|
"value": -250,
|
||||||
"rightTangent": 0,
|
"rightTangent": 0,
|
||||||
"rightTangentWeight": 1,
|
"rightTangentWeight": 1,
|
||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
"interpolationMode": 0,
|
"interpolationMode": 0,
|
||||||
"tangentWeightMode": 0,
|
"tangentWeightMode": 0,
|
||||||
"value": -262.56298828125,
|
"value": -250,
|
||||||
"rightTangent": 0,
|
"rightTangent": 0,
|
||||||
"rightTangentWeight": 1,
|
"rightTangentWeight": 1,
|
||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"preExtrapolation": 1,
|
"preExtrapolation": 1,
|
||||||
@@ -154,9 +148,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
@@ -168,9 +160,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
@@ -182,9 +172,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"preExtrapolation": 1,
|
"preExtrapolation": 1,
|
||||||
@@ -213,9 +201,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
@@ -227,9 +213,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"preExtrapolation": 1,
|
"preExtrapolation": 1,
|
||||||
@@ -304,43 +288,37 @@
|
|||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
"interpolationMode": 0,
|
"interpolationMode": 0,
|
||||||
"tangentWeightMode": 0,
|
"tangentWeightMode": 0,
|
||||||
"value": -232.46299743652344,
|
"value": -220,
|
||||||
"rightTangent": 0,
|
"rightTangent": 0,
|
||||||
"rightTangentWeight": 1,
|
"rightTangentWeight": 1,
|
||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
"interpolationMode": 0,
|
"interpolationMode": 0,
|
||||||
"tangentWeightMode": 0,
|
"tangentWeightMode": 0,
|
||||||
"value": -232.56300354003906,
|
"value": -220,
|
||||||
"rightTangent": 0,
|
"rightTangent": 0,
|
||||||
"rightTangentWeight": 1,
|
"rightTangentWeight": 1,
|
||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
"interpolationMode": 0,
|
"interpolationMode": 0,
|
||||||
"tangentWeightMode": 0,
|
"tangentWeightMode": 0,
|
||||||
"value": -232.56300354003906,
|
"value": -220,
|
||||||
"rightTangent": 0,
|
"rightTangent": 0,
|
||||||
"rightTangentWeight": 1,
|
"rightTangentWeight": 1,
|
||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"preExtrapolation": 1,
|
"preExtrapolation": 1,
|
||||||
@@ -370,9 +348,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
@@ -384,9 +360,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
@@ -398,9 +372,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"preExtrapolation": 1,
|
"preExtrapolation": 1,
|
||||||
@@ -488,43 +460,37 @@
|
|||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
"interpolationMode": 0,
|
"interpolationMode": 0,
|
||||||
"tangentWeightMode": 0,
|
"tangentWeightMode": 0,
|
||||||
"value": -202.56300354003906,
|
"value": -190,
|
||||||
"rightTangent": 0,
|
"rightTangent": 0,
|
||||||
"rightTangentWeight": 1,
|
"rightTangentWeight": 1,
|
||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
"interpolationMode": 0,
|
"interpolationMode": 0,
|
||||||
"tangentWeightMode": 0,
|
"tangentWeightMode": 0,
|
||||||
"value": -202.56300354003906,
|
"value": -190,
|
||||||
"rightTangent": 0,
|
"rightTangent": 0,
|
||||||
"rightTangentWeight": 1,
|
"rightTangentWeight": 1,
|
||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
"interpolationMode": 0,
|
"interpolationMode": 0,
|
||||||
"tangentWeightMode": 0,
|
"tangentWeightMode": 0,
|
||||||
"value": -202.56300354003906,
|
"value": -190,
|
||||||
"rightTangent": 0,
|
"rightTangent": 0,
|
||||||
"rightTangentWeight": 1,
|
"rightTangentWeight": 1,
|
||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"preExtrapolation": 1,
|
"preExtrapolation": 1,
|
||||||
@@ -554,9 +520,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
@@ -568,9 +532,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.RealKeyframeValue",
|
"__type__": "cc.RealKeyframeValue",
|
||||||
@@ -582,9 +544,7 @@
|
|||||||
"leftTangent": 0,
|
"leftTangent": 0,
|
||||||
"leftTangentWeight": 1,
|
"leftTangentWeight": 1,
|
||||||
"easingMethod": 0,
|
"easingMethod": 0,
|
||||||
"__editorExtras__": {
|
"__editorExtras__": null
|
||||||
"tangentMode": 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"preExtrapolation": 1,
|
"preExtrapolation": 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user