Skip to content

NScrollBar

NScrollBar组件用于在UI中展示一个可编辑的滚动条。NScrollBar接口如下表所示:

接口名称返回值接口含义
SetBackgroundTexture(const std::string& file)void设置背景图片
SetBackgroundTexture(NTexturePtr texture)void设置背景图片
GetBackgroundTexture()NTexturePtr获取背景图片
SetHandleTexture(const std::string& file, ESelectionState state = ESelectionState::ES_Normal)void设置控制柄图片
SetHandleTexture(NTexturePtr texture, ESelectionState state = ESelectionState::ES_Normal)void设置控制柄图片。
GetHandleTexture(ESelectionState state)NTexturePtr获取控制柄图片
SetHandleColor(Color32 color, ESelectionState state = ESelectionState::ES_Normal)void设置控制柄颜色
GetHandleColor(ESelectionState state)Color32获取控制柄颜色
SetHandleVisible(bool visible)void设置控制柄是否可见
GetHandleVisible()bool获取控制柄是否可见
SetHandleSize(float percent)void设置控制柄大小
GetHandleSize()float获取控制柄大小
SetScrollBarType(ESliderDirection barType)void设置滚动条类型
GetScrollBarType()ESliderDirection获取滚动条类型
SetTransitionStyle(ETransitionStyle style)void确定控件以何种方式对用户操作进行可视化响应的属性。
GetTransitionStyle()ETransitionStyle获取过渡选项
SetAlpha(float alpha)void设置控件透明度
GetAlpha()float获取控件透明度
SetInteractabled(bool interactabled)void设置是否可交互
IsInteractabled()bool获取是否可交互
SetValue(float percent)void设置滚动条的值
GetValue()float获取滚动条的值
SetOnValueChangedCallback(OnValueChange& callback)void设置滚动条数值变化回调函数

设置和获取样式

接口: void SetTransitionStyle(ETransitionStyle style); ETransitionStyle GetTransitionStyle();

参数: style:控制柄显示类型,分为纹理,纯色

描述: 设置控制柄以何种方式对用户操作进行可视化响应的属性,可以是纹理,也可以是纯色。

代码示例:

cpp
void NTest::Start()
{
    auto actor= GetNActor();
    auto comp = actor->GetComponent<NScrollBar>();
    //设置采用纯色方式.
    comp ->SetTransitionStyle(ETransitionStyle::ETS_COLOR);
}

设置显示效果

接口: void SetBackgroundTexture(const std::string& fileName); void SetBackgroundTexture(NTexturePtr texture); NTexturePtr GetBackgroundTexture(); void SetHandleTexture(const std::string& fileName, ESelectionState state = ESelectionState::ES_Normal); void SetHandleTexture(NTexturePtr texture, ESelectionState state = ESelectionState::ES_Normal); NTexturePtr GetHandleTexture(ESelectionState state); void SetHandleColor(Color32 color, ESelectionState state = ESelectionState::ES_Normal); Color32 GetHandleColor(ESelectionState state); void SetHandleVisible(bool visible); bool GetHandleVisible(); void SetHandleSize(float percent); float GetHandleSize(); void SetScrollBarType(EScrollBarDirection barType); EScrollBarDirection GetScrollBarType(); void SetAlpha(float alpha); float GetAlpha();

参数:

参数说明
fileName图片资源路径
color颜色值
stateESelectionState表示控制柄状态,ES_Normal表示默认状态,ES_Highlighted表示高亮状态(选中状态),ES_Pressed表示按下状态,ES_Disabled表示不可用状态。
visible控制柄是否可见
percent控制柄占据滚动条的比例
barTypeED_LeftToRight表示从左到右为0~1;ED_RightToLeft表示从右到左;ED_BottomToTop表示从下到上并改变为垂直滚动条;ED_TopToBottom表示从上到下并改变为垂直滚动条
alpha透明度

描述: 通过上述接口可以实现改变滚动条组控件的显示效果。

代码示例:

cpp
void NTest::Start()
{
    auto actor= GetNActor();
    auto comp = actor->GetComponent<NScrollBar>();
    comp ->SetTransitionStyle(ETransitionStyle::ETS_IMAGE);
    comp ->SetHandleTexture("Assets/Textures/Skybox.png",ESelectionState::ES_Pressed);
    comp ->SetHandleColor(Color32::Red,ESelectionState::ES_Pressed);
}

设置和获取滚动条数值

接口: void SetValue(float percent); float GetValue();

参数: percent:设置滚动条数值

描述: 通过上述接口可以设置滚动条数值以及获取滚动条数值。

代码示例:

cpp
void NTest::Start()
{
    auto actor = GetNActor();
    auto comp = actor->GetComponent<NScrollBar>();
    comp->SetValue(0.5f);
}

设置滚动条数值改变回调

接口: void SetOnValueChangedCallback(OnValueChange& callback);

参数: OnValueChange:回调函数函数指针

描述: 通过上述接口可以设置滚动条数值改变时回调函数。

代码示例:

cpp
void NTest::Start()
{
    auto actor = GetNActor();
    auto comp = actor->GetComponent<NScrollBar>();
    OnValueChange call = BIND_MEMBER_FUNCTION(&NTest::OnValueChanged, this);
    comp->SetOnValueChangedCallback(call);
}
void NTest::OnValueChanged(float value)
{
    LogM(NS_LOG_ENGINE, "NScrollBar value is Changed:%f", value);
}

设置是否可交互

接口: void SetInteractabled(bool interactabled); bool IsInteractabled();

参数: interactabled:是否可交互

描述: 如果不可以交互,将不再接收事件,同时控件可选项对应图形显示为不可交互样式。

代码示例:

cpp
void NTest::Start()
{
    auto actor = GetNActor();
    auto comp = actor->GetComponent<NScrollBar>();
    comp->SetInteractabled(true);
}