60 lines
1.5 KiB
Plaintext
60 lines
1.5 KiB
Plaintext
/*
|
|
文件名:ChatBubble.nut
|
|
路径:User/Asset/Character/ChatBubble.nut
|
|
创建日期:2025-01-24 19:04
|
|
文件用途:聊天气泡
|
|
*/
|
|
class Character_ChatBubble extends CL_CanvasObject {
|
|
|
|
RealWidth = null;
|
|
RealHeight = null;
|
|
|
|
constructor(Msg) {
|
|
base.constructor();
|
|
Init(Msg);
|
|
}
|
|
|
|
function Init(Msg) {
|
|
//渲染文本
|
|
local BoxWidth = 0;
|
|
local Tag = {
|
|
color = sq_RGBA(255, 255, 255, 250)
|
|
};
|
|
if (Msg.len() > 27) {
|
|
Tag.wrap_width <- 114;
|
|
BoxWidth = 130;
|
|
}
|
|
local Text = FontAssetManager.GenerateNormal(Msg, false, Tag);
|
|
|
|
//计算文本大小
|
|
local TextSize = Text.GetSize();
|
|
RealWidth = BoxWidth ? BoxWidth : TextSize.w + 18;
|
|
RealHeight = TextSize.h + 18;
|
|
//创建背景框 +18是 上下的空隙
|
|
local Bg = Yosin_NineBoxStretch(RealWidth, RealHeight, "sprite/interface/messageballoon.img", 20);
|
|
|
|
//重设大小
|
|
ResizeAndClear(TextSize.w + 20, TextSize.h + 40);
|
|
SetFillBrush(sq_RGBA(105, 212, 238, 250));
|
|
SetStrokeBrush(sq_RGBA(105, 212, 238, 250));
|
|
|
|
// 开始绘制
|
|
BeginDraw();
|
|
//绘制背景
|
|
DrawActor(Bg, 0, 0);
|
|
//绘制文字
|
|
DrawActor(Text, 9, 8);
|
|
// DrawRect(9, 8, TextSize.w + 9, TextSize.h + 8)
|
|
|
|
// 结束绘制
|
|
EndDraw();
|
|
}
|
|
|
|
function OnUpdate(Dt) {
|
|
base.OnUpdate(Dt);
|
|
if (ExistingTime >= 4000) {
|
|
Parent.ChatObject = null;
|
|
RemoveSelf();
|
|
}
|
|
}
|
|
} |