2025-06-04 05:02:57 +08:00

144 lines
3.6 KiB
Plaintext

SceneSpeakCell = reusableClass("SceneSpeakCell");
SceneSpeakCell.PoolSize = 10
SceneSpeakCell.ResID = ResourcePathHelper.UICell("SceneSpeakCell")
function SceneSpeakCell:CreateSpeakGO()
if(LuaGameObject.ObjectIsNull(self.parent))then
return;
end
if(self.gameObject == nil or LuaGameObject.ObjectIsNull(self.gameObject))then
self.gameObject = Game.AssetManager_UI:CreateSceneUIAsset(SceneSpeakCell.ResID, self.parent);
self.gameObject.transform:SetParent(self.parent.transform, false);
self.gameObject.transform.localRotation = LuaGeometry.Const_Qua_identity;
self.gameObject.transform.localScale = LuaGeometry.Const_V3_one;
self:SetOffsetY(0);
self.widget = self.gameObject:GetComponent(UIWidget);
self.label = GameObjectUtil.Instance:DeepFind(self.gameObject, "Label"):GetComponent(UILabel);
end
return self.gameObject;
end
local cellOffset = LuaVector3();
function SceneSpeakCell:SetOffsetY(offsetY)
cellOffset:Set(0, 10 + offsetY, 0);
self.gameObject.transform.localPosition = cellOffset;
end
function SceneSpeakCell:SetDelayDestroy(fadeInTime, stayTime, fadeOutTime)
if(self.gameObject)then
self.widget.alpha = 0;
self.fadeInTime = fadeInTime or 0;
self.stayTime = stayTime or 3;
self.fadeOutTime = fadeOutTime or 0;
self:_FadeIn()
end
end
function SceneSpeakCell:CancelTween()
if(self.lt) then
self.lt:cancel()
self.lt = nil
end
end
-- step1
function SceneSpeakCell:_FadeIn()
self:CancelTween()
if(not Slua.IsNull(self.gameObject)) then
self.lt = LeanTween.value(self.gameObject,SceneSpeakCell._AlphaTo,0,1,self.fadeInTime)
self.lt.onUpdateParam = self
self.lt.onCompleteObject = SceneSpeakCell._FadeOut
self.lt.onCompleteParam = self
end
end
function SceneSpeakCell._AlphaTo(alpha, self)
self.widget.alpha = alpha;
end
function SceneSpeakCell:_FadeOut()
self:CancelTween()
if(not Slua.IsNull(self.gameObject)) then
self.lt = LeanTween.value(self.gameObject,SceneSpeakCell._AlphaTo,1,0,self.fadeOutTime)
self.lt.delay = self.stayTime
self.lt.onUpdateParam = self
self.lt.onCompleteObject = SceneSpeakCell._FadeEnd
self.lt.onCompleteParam = self
end
end
function SceneSpeakCell:_FadeEnd()
self:CancelTween()
local leftlen = StringUtil.getTextLen(self.leftStr);
if(type(self.leftStr)=="string" and leftlen>0)then
self:SetData(self.leftStr);
elseif(not Slua.IsNull(self.gameObject))then
Game.GOLuaPoolManager:AddToSceneUIPool(SceneSpeakCell.ResID, self.gameObject)
self.gameObject = nil;
end
end
function SceneSpeakCell:SetData(text)
self:CreateSpeakGO();
if(self.gameObject == nil)then
return;
end
if(text and self.label)then
self:UpdateGameObjectActive();
self.label.text = text;
UIUtil.FitLabelHeight(self.label, 230);
local len = StringUtil.getTextLen(self.label.processedText);
local textlen = StringUtil.getTextLen(text);
if(len < textlen)then
self.leftStr = StringUtil.getTextByIndex(text, len + 1, textlen);
else
self.leftStr = "";
end
self:SetDelayDestroy(0.3, 2, 0.5);
end
end
function SceneSpeakCell:Active(b)
self.objActive = b;
self:UpdateGameObjectActive();
end
function SceneSpeakCell:UpdateGameObjectActive()
if(not LuaGameObject.ObjectIsNull(self.gameObject))then
self.gameObject:SetActive(self.objActive);
end
end
-- override begin
function SceneSpeakCell:DoConstruct(asArray, parent)
self.leftStr = "";
self.objActive = true;
self.parent = parent;
end
function SceneSpeakCell:DoDeconstruct(asArray)
self:CancelTween();
if(not LuaGameObject.ObjectIsNull(self.gameObject))then
Game.GOLuaPoolManager:AddToSceneUIPool(SceneSpeakCell.ResID, self.gameObject)
end
self.gameObject = nil;
self.parent = nil;
end
-- override end