import { _decorator, Component, Label, Node, Size, UITransform } from "cc"; import Tools from "../../utils/tools"; const { ccclass, property } = _decorator; @ccclass("DialogBubble") export class DialogBubble extends Component { @property(UITransform) bg: UITransform = null; @property(Label) content: Label = null; @property(UITransform) contentT: UITransform = null; updateBubbleContent(str: string) { const lines = str.split("\n"); let len = 0; let index = 0; for (let i = 0; i < lines.length; i++) { const element = lines[i]; if (element.length > len) { len = element.length; index = i; } } let finalLen = 0; // for (let i = 0; i < lines[index].length; i++) { // const element = lines[index][i]; // if ("\u4e00" <= element[i] && element[i] <= "\u9fff") { // finalLen += 35; // } else { // finalLen += 18; // } // } if (Tools.IsChinese(lines[index])) { finalLen = 35 * lines[index].length; } else { finalLen = 21 * lines[index].length; } this.content.string = str; this.contentT.setContentSize( new Size(Math.min(finalLen, 950), this.contentT.contentSize.y) ); this.content.updateRenderData(); this.bg.setContentSize( new Size( this.contentT.contentSize.x + 30, this.contentT.contentSize.y + 20 ) ); return this.bg.contentSize.y; } }