美术更新

- detail页面修改
- ui布局修改
This commit is contained in:
2025-08-25 20:15:42 +08:00
parent 2ae00f5c23
commit d6c3c775b5
183 changed files with 22192 additions and 12914 deletions
@@ -15,6 +15,8 @@ import ConfigManager from "../../manager/ConfigManager";
import LanguageUtils from "../../../Main/Common/LanguageUtils";
import Utils from "../../../Main/Common/Utils";
import { InnerMsgCode } from "../../../Main/Config/InnerMsgCode";
import { SimpleToggle } from "../components/SimpleToggle";
import { GirlDetail } from "../../../schema/schema";
const { ccclass, property } = _decorator;
@@ -27,6 +29,11 @@ export class GirlDetailPanel extends li_BaseView {
@property(Label)
girlName: Label;
@property(SimpleToggle)
imgToggle: SimpleToggle = null;
@property(SimpleToggle)
videoToggle: SimpleToggle = null;
@property(Node)
starParent: Node;
@@ -67,6 +74,18 @@ export class GirlDetailPanel extends li_BaseView {
}
this.tags.string = desc;
});
this.imgToggle.callback = this.bindImgToggle.bind(this);
this.videoToggle.callback = this.bindVideoToggle.bind(this);
// 添加视频加载完成回调
this.avatarVideo.node.on(
VideoPlayer.EventType.READY_TO_PLAY,
() => {
this.adjustVideoScale();
},
this
);
}
setVideEnable(enable: boolean) {
@@ -86,8 +105,8 @@ export class GirlDetailPanel extends li_BaseView {
this.avatarVideo.node.parent.getComponent(UITransform);
const videoTransform = this.avatarVideo.node.getComponent(UITransform);
if (parentTransform && videoTransform && videoTransform.height > 0) {
const scale = parentTransform.height / videoTransform.height;
if (parentTransform && videoTransform && videoTransform.width > 0) {
const scale = parentTransform.width / videoTransform.width;
this.avatarVideo.node.setScale(scale, scale, 1);
console.log(
`Video scaled to: ${scale}, parent height: ${parentTransform.height}, video height: ${videoTransform.height}`
@@ -114,47 +133,14 @@ export class GirlDetailPanel extends li_BaseView {
tagKey: string;
category;
refresh(index: number) {
console.log(index);
const dataDetail = ConfigManager.tables.TbGirlsDetail.get(this.id);
console.log(dataDetail);
const data = ConfigManager.tables.TbGirls.get(this.id);
this.category = data.category;
this.nameKey = data.nameKey;
this.girlName.string = LanguageUtils.getText(data.nameKey);
if (dataDetail.pics[0].endsWith("video")) {
ResManager.I.changeBundleVideo(
this.avatarVideo,
dataDetail.pics[0],
"Chat18x"
);
// 添加视频加载完成回调
this.avatarVideo.node.on(
VideoPlayer.EventType.READY_TO_PLAY,
() => {
this.adjustVideoScale();
},
this
);
// 也立即尝试调整(以防已经加载完成)
this.adjustVideoScale();
}
if (dataDetail.pics.length > 1) {
for (let i = this.imgsLayout.children.length - 1; i >= 0; i--) {
this.imgsLayout.children[i].destroy();
}
for (let i = 1; i < dataDetail.pics.length; i++) {
const path = dataDetail.pics[i];
let newNode = instantiate(this.imgItemInst.node);
let item = newNode.getComponent(DetailImageItem);
item.refresh(path, this);
newNode.active = true;
this.imgsLayout.addChild(newNode);
}
}
this.desc.string = dataDetail.detailDesc;
let desc = "";
this.tagKey = data.tagKey;
@@ -170,11 +156,47 @@ export class GirlDetailPanel extends li_BaseView {
this.descAge.string = data.age.toString();
this.desc.string = dataDetail.detailDesc;
this.id = data.id;
ResManager.I.changeBundleVideo(
this.avatarVideo,
dataDetail.vids[0],
"Chat18x"
);
// 也立即尝试调整(以防已经加载完成)
this.adjustVideoScale();
this.vids = dataDetail.vids.slice(0);
this.refreshImgs(dataDetail.pics, true);
}
vids: string[];
bindImgToggle() {
const dataDetail = ConfigManager.tables.TbGirlsDetail.get(this.id);
this.refreshImgs(dataDetail.pics, true);
}
bindVideoToggle() {
this.refreshImgs(this.vids, false);
}
refreshImgs(paths: string[], isImg: boolean) {
for (let i = this.imgsLayout.children.length - 1; i >= 0; i--) {
this.imgsLayout.children[i].destroy();
}
for (let i = 1; i < paths.length; i++) {
const path = paths[i];
let newNode = instantiate(this.imgItemInst.node);
let item = newNode.getComponent(DetailImageItem);
item.refresh(path, this, isImg);
newNode.active = true;
this.imgsLayout.addChild(newNode);
}
}
OnClickChatBtn() {
NavigationManager.Instance.navigateToChat(this.id);
this.onClose();
// 使用带过渡动画的导航方法
NavigationManager.Instance.navigateToChatWithTransition(this.id, this);
// 注意:不在这里直接调用onClose,而是在动画完成后由NavigationManager调用
}
returnBtn() {