feat: 支持新版的关卡页面

This commit is contained in:
richarjiang
2026-04-19 14:19:13 +08:00
parent 34e06480ce
commit 5eef9d8528
9 changed files with 1165 additions and 410 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -43,6 +43,18 @@ export class PageLevel extends BaseView {
@property(Node)
mainImage: Node | null = null;
@property(Node)
mainImage2: Node | null = null;
@property(Label)
image1DescLabel: Label | null = null;
@property(Label)
image2DescLabel: Label | null = null;
@property(Label)
punchlineLabel: Label | null = null;
@property(Node)
tipsItem1: Node | null = null;
@@ -268,8 +280,17 @@ export class PageLevel extends BaseView {
this._isTimeUp = false;
this._countdown = 60;
// 设置主图
this.setMainImage(config.spriteFrame);
// 设置主图图片1
this.setMainImage(config.spriteFrame1);
// 设置图片2
this.setMainImage2(config.spriteFrame2);
// 设置图片描述
this.setImageDescriptions(config.image1Description, config.image2Description);
// 隐藏谐音梗说明(通关后才显示)
this.setPunchline(null);
// 设置线索1默认解锁如果有的话
if (config.clue1) {
@@ -618,7 +639,7 @@ export class PageLevel extends BaseView {
// ========== 主图相关方法 ==========
/**
* 设置主图
* 设置主图图片1
*/
private setMainImage(spriteFrame: SpriteFrame | null): void {
if (!this.mainImage) return;
@@ -626,7 +647,47 @@ export class PageLevel extends BaseView {
const sprite = this.mainImage.getComponent(Sprite);
if (sprite && spriteFrame) {
sprite.spriteFrame = spriteFrame;
console.log('[PageLevel] 设置主图');
console.log('[PageLevel] 设置主图1');
}
}
/**
* 设置图片2
*/
private setMainImage2(spriteFrame: SpriteFrame | null): void {
if (!this.mainImage2) return;
const sprite = this.mainImage2.getComponent(Sprite);
if (sprite && spriteFrame) {
sprite.spriteFrame = spriteFrame;
console.log('[PageLevel] 设置主图2');
}
}
/**
* 设置图片描述文本
*/
private setImageDescriptions(desc1: string | null, desc2: string | null): void {
if (this.image1DescLabel) {
this.image1DescLabel.string = desc1 ?? '';
}
if (this.image2DescLabel) {
this.image2DescLabel.string = desc2 ?? '';
}
}
/**
* 设置谐音梗说明(通关后展示,未通关时传 null 隐藏)
*/
private setPunchline(punchline: string | null): void {
if (!this.punchlineLabel) return;
if (punchline) {
this.punchlineLabel.node.active = true;
this.punchlineLabel.string = punchline;
} else {
this.punchlineLabel.node.active = false;
this.punchlineLabel.string = '';
}
}
@@ -819,6 +880,11 @@ export class PageLevel extends BaseView {
// 播放成功音效
this.playSuccessSound();
// 通关后展示谐音梗说明
if (this._currentConfig?.punchline) {
this.setPunchline(this._currentConfig.punchline);
}
const levelId = this._currentConfig?.id ?? '';
const timeSpent = Math.max(0, Math.round((Date.now() - this._levelStartTime) / 1000));

View File

@@ -204,8 +204,8 @@ export class PagePreviewLevels extends BaseView {
const levelCover = item.getChildByName('LevelCover');
if (levelCover) {
const sprite = levelCover.getComponent(Sprite);
if (sprite && config.spriteFrame) {
sprite.spriteFrame = config.spriteFrame;
if (sprite && config.spriteFrame1) {
sprite.spriteFrame = config.spriteFrame1;
}
}

View File

@@ -326,8 +326,8 @@ export class PageWriteLevels extends BaseView {
const levelCover = item.getChildByName('LevelCover');
if (levelCover) {
const sprite = levelCover.getComponent(Sprite);
if (sprite && config.spriteFrame) {
sprite.spriteFrame = config.spriteFrame;
if (sprite && config.spriteFrame1) {
sprite.spriteFrame = config.spriteFrame1;
}
}