SSKinGroup 组皮肤¶
Warning
The current page still doesn't have a translation for this language.
You can read it through google translate.
概述¶
SSKinGroup
是 SOUI 中用于将多个皮肤组合在一起的皮肤类型。它允许为控件的不同状态(正常、悬停、按下、禁用)分别指定不同的皮肤,从而实现更丰富的视觉效果。
类定义¶
class SOUI_EXP SSKinGroup : public SSkinObjBase
{
protected:
SAutoRefPtr<ISkinObj> m_skins[4]; // 不同状态的皮肤数组
};
属性列表¶
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
name | string | - | 皮肤名 |
scale | float | - | 比例 |
alpha | int | - | alpha |
enableColorize | bool | - | enableColorize(是:1 |
normal | skin | - | 正常状态皮肤 |
hover | skin | - | 悬停状态皮肤 |
pushDown | skin | - | 按下状态皮肤 |
disable | skin | - | 禁用状态皮肤 |
XML示例¶
<!-- 基本用法 -->
<group name="btn_skin_group"
normal="btn_normal_skin"
hover="btn_hover_skin"
pushDown="btn_pushdown_skin"
disable="btn_disable_skin"/>
<!-- 组合不同类型的皮肤 -->
<group name="complex_skin_group"
normal="imglist:btn_normal"
hover="gradation:hover_gradation"
pushDown="button:push_button"
disable="colorrect:disable_rect"/>
<!-- 带透明度的组皮肤 -->
<group name="transparent_group"
normal="btn_normal_skin"
hover="btn_hover_skin"
alpha="200"/>
使用场景¶
1. 按钮状态管理¶
- 为按钮的不同状态指定不同的皮肤
- 实现复杂的按钮交互效果
2. 控件样式切换¶
- 根据控件状态动态切换样式
- 实现丰富的用户界面反馈
3. 复合皮肤效果¶
- 组合多种皮肤类型实现复杂效果
- 灵活配置不同状态的视觉表现
最佳实践¶
- 状态完整性:尽量为所有状态(normal、hover、pushDown、disable)都指定皮肤,确保控件在各种状态下都有合适的视觉表现
- 皮肤类型匹配:组合的皮肤应具有相似的视觉尺寸,避免状态切换时出现明显的尺寸变化
- 性能优化:避免在组皮肤中使用过于复杂的子皮肤,以免影响渲染性能
常见问题¶
Q: 部分状态皮肤不显示怎么办?¶
A: 检查是否为对应状态指定了皮肤,未指定的状态将使用默认或前一状态的皮肤。
Q: 状态切换时出现闪烁怎么办?¶
A: 确保所有状态皮肤的尺寸一致,或者在控件上设置固定尺寸。
Q: 如何实现动态皮肤切换?¶
A: 通过代码动态修改组皮肤中各状态对应的子皮肤。
相关皮肤¶
- 图片列表皮肤(SSkinImgList) - 基础图片列表皮肤
- 按钮皮肤(SSkinButton) - 支持渐变和圆角的按钮皮肤
- 渐变皮肤(SSkinGradation) - 支持线性渐变的皮肤