ui_sprite改进
This commit is contained in:
+23
-4
@@ -69,15 +69,16 @@ void Sprite::SetMode(AutoSize auto_size, FillMode mode)
|
||||
_cptElemData._size = _spr->GetSize();
|
||||
}
|
||||
|
||||
void Sprite::SetElementData(const Align::Direction2& hv)
|
||||
void Sprite::SetElementData(const Align::Direction2& hv, const Position& pos)
|
||||
{
|
||||
_cptElemData._size = GetSize();
|
||||
_cptElemData._anchor = {};
|
||||
_cptElemData._hv = hv;
|
||||
_cptElemData._pos = pos;
|
||||
|
||||
//在组内则更新位置
|
||||
//if (_panel)
|
||||
// _panel->OnChangeElementData(&_cpt);
|
||||
// 在组内则更新位置
|
||||
if (_panel)
|
||||
_panel->OnChangeElementData(&_cpt);
|
||||
}
|
||||
|
||||
void Sprite::SetEDOrderOffset(int order_offset)
|
||||
@@ -85,6 +86,24 @@ void Sprite::SetEDOrderOffset(int order_offset)
|
||||
_cptElemData._orderOffset = order_offset;
|
||||
}
|
||||
|
||||
void Sprite::SetSprite(gcSprite spr)
|
||||
{
|
||||
// 复用创建时的逻辑:为新精灵创建独立Coor并设置UI标记
|
||||
if (!spr->IsOwnCoor())
|
||||
{
|
||||
Coor* coor = Coor::Create(spr->GetCoor());
|
||||
spr->SetCoor(coor, true);
|
||||
}
|
||||
// 沿用原有绘制层级
|
||||
spr->SetOrder(_spr->GetOrder());
|
||||
_spr = spr;
|
||||
_spr->SetUI(true);
|
||||
SetMode(_autoSize, _fillMode);
|
||||
// 已加入面板时,重新定位新精灵的Coor(原Coor随旧精灵被替换,AddCpt不会再次处理)
|
||||
if (_panel)
|
||||
_panel->OnChangeElementData(&_cpt);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -95,6 +95,13 @@ public:
|
||||
Coor* GetCoor() { return _spr->GetCoor(); }
|
||||
gcSprite GetSprite() { return _spr; }
|
||||
|
||||
/**
|
||||
* @brief 更换显示的精灵
|
||||
* @param[in] spr 新的精灵
|
||||
* @note 复用创建时的逻辑设置Coor与UI标记,并沿用当前的AutoSize/FillMode与绘制层级
|
||||
*/
|
||||
void SetSprite(gcSprite spr);
|
||||
|
||||
/**
|
||||
* @brief 设置显示模式
|
||||
* @note 注释参考Create
|
||||
@@ -108,7 +115,7 @@ public:
|
||||
return _spr->GetSize();
|
||||
}
|
||||
|
||||
void SetElementData(const Align::Direction2& hv);
|
||||
void SetElementData(const Align::Direction2& hv, const Position& pos = {});
|
||||
void SetEDOrderOffset(int order_offset);
|
||||
|
||||
void SetVisible(bool visible)
|
||||
|
||||
@@ -83,6 +83,8 @@ public:
|
||||
gcText GetText() { return _txt; }
|
||||
|
||||
void SetElementData(const Align::Direction2& hv, const Position& pos = {});
|
||||
|
||||
|
||||
Components* GetCpt() { return &_cpt; }
|
||||
private:
|
||||
Text() :
|
||||
|
||||
Reference in New Issue
Block a user