LayaAir UI 组件 # HSlider,VSlider(水平/垂直滑动条)

我不是女神ヾ 2022-04-10 06:59 411阅读 0赞

目录

HSlider 组件

默认资源

VSlider 组件

自定义资源


HSlider 组件
















Package laya.ui
public class HSlider
Inheritance HSlider InheritanceSlider InheritanceComponent InheritanceSprite InheritanceNode InheritanceEventDispatcher Inheritance Object

1、HSlider 与 VSlider 组件都是 Slider 组件的子类,分别表示横向滑动条与纵向滑动条。用户可以通过在滑块轨道之间移动滑块来选择值。常用于如播放器进度控制、音量大小控制,一些UI上的数值调整等。

2、HSlider 组件采用水平方向,滑块轨道从左向右扩展,而显示滑动块位置数值的标签位于轨道的上部,可隐藏。








































Property(属性)
allowClickBack : Boolean ,一个布尔值,指定是否允许通过点击滑动条改变 Slider 的 value 属性值。
bar : Button ,[read-only] 表示滑块按钮的引用。
changeHandler : Handler  ,数据变化处理器。 默认回调参数为滑块位置属性 value属性值:Number 。
isVertical : Boolean = true  ,一个布尔值,指示是否为垂直滚动。如果值为true,则为垂直方向,否则为水平方向。 默认值为:false
max : Number ,获取或设置表示最高位置的数字。 默认值为100。
min : Number  ,获取或设置表示最低位置的数字。 默认值为0。
showLabel : Boolean = true ,一个布尔值,指示是否显示标签。不写时默认会显示标签(滑动的当前值)。
sizeGrid : String

当前实例的背景图( Image )和滑块按钮( Button )实例的有效缩放网格数据。 数据格式:”上边距,右边距,下边距,左边距,是否重复填充(值为0:不重复填充,1:重复填充)”,以逗号分隔。 例如:”4,4,4,4,1”

skin : String

对象的皮肤地址,以字符串表示。 如果资源未加载,则先加载资源,加载完成后应用于此对象。 注意:资源加载完成后,会自动缓存至资源库中。

tick : Number ,滑动的刻度值,滑动数值为tick的整数倍。默认值为1。
value : Number  ,获取或设置表示当前滑块位置的数字。















Method(方法)

HSlider(skin:String = null)

创建一个 HSlider 类实例。

destroy(destroyChild:Boolean = true):void  ,[override] inheritDoc

setSlider(min:Number, max:Number, value:Number):void  ,设置滑动条的信息。

更多 API 查看:https://layaair.ldc.layabox.com/api/?category=UI&class=laya.ui.Slider

皮肤规范

1、HSlider 资源命名规以 hsliser 为前缀名,它的默认资源总共3个,分别为滑块资源 hslider$bar.png、进度条资源 hslider$progress.png 及底图资源 hsliser.png。

​2、资源至少应当有两个,一个底图资源,一个滑块资源,否则无法实现滑动功能。缺少了进度条资源组件不会报错,只是不显示进度。
20181228150705255.gif

3、本文使用 LayaAir IDE 2.0.0beta5 版本,系统默认提供的 HSlider 与 VSlider 资源都只有底图资源与滑块资源,没有进度条资源。如果这些默认样式无法满足需求,则自己可以进行 PS,然后添加进行即可。

默认资源

  1. //初始化引擎,设置宽高并开启WebGL渲染模式
  2. Laya.init(600, 400, Laya.WebGL);
  3. Laya.stage.bgColor = "#FFF";//设置舞台背景颜色
  4. var hslider;//水平滑动条对象
  5. var label_Info;//标签对象
  6. //加载系统默认的图集资源,加载成功后执行onLoad回调方法
  7. Laya.loader.load("res/atlas/comp.atlas", Laya.Handler.create(this, onLoaded));
  8. function onLoaded() {
  9. //创建水平滑动条对象,参数为皮肤地址(使用系统默认的进度条资源),也可以用 skin 属性设置
  10. hslider = new Laya.HSlider("comp/hslider.png");
  11. hslider.width = 300;//滑动条宽度 300 px
  12. hslider.pos(10, 20);//显示位置
  13. hslider.min = 0;//获取或设置表示最低位置的数字。 默认值为0
  14. hslider.max = 120;//获取或设置表示最高位置的数字。 默认值为100
  15. hslider.value = 50;//获取或设置表示当前滑块位置的数字
  16. hslider.tick = 2;//滑动的刻度值,滑动数值为tick的整数倍。默认值为1
  17. hslider.bar.size(30,30);//设置滑块按钮大小
  18. Laya.stage.addChild(hslider);//添加到舞台显示
  19. /**
  20. * changeHandler:数据变化处理器
  21. * 默认回调参数为滑块位置属性 value
  22. */
  23. hslider.changeHandler = new Laya.Handler(this, function (value) {
  24. label_Info.text = "滑动:" + hslider.value;
  25. });
  26. showInfo();
  27. }
  28. //显示一个标签用于描述当前滑动的进度
  29. function showInfo() {
  30. label_Info = new Laya.Label();
  31. label_Info.text = "滑动:" + hslider.value;
  32. label_Info.fontSize = 25;
  33. label_Info.color = "#252525";
  34. label_Info.pos(150, 50);
  35. Laya.stage.addChild(label_Info);
  36. }

20181228155609656.gif

1、如上所示使用的系统默认提供的资源,如果想自定义可以参考《自定义进度条资源》

VSlider 组件
















Package laya.ui
public class VSlider
Inheritance VSlider InheritanceSlider InheritanceComponent InheritanceSprite InheritanceNode InheritanceEventDispatcher Inheritance Object

1、使用 VSlider 控件,用户可以通过在滑块轨道上移动滑块来选择值。

2、VSlider 控件采用垂直方向,滑块轨道从下往上扩展,而标签位于轨道的左右两侧。

3、它的原理与上面的 HSlider 完全一样,编码也完全一样,因为它们都是继承 Silder,只需 isVertical = true 指定为垂直滑动条,然后皮肤使用垂直皮肤即可。

4、这里采用 PS 随便画两张来进行演示,不再使用系统默认提供的资源。以 vslider_为前缀的资源自动识别为垂直滑动条,可以从参考《LayaAir 快捷键设置与资源命名规则》

5、VSlider 资源命名规以 vslider 为前缀名,它的默认资源总共3个,分别为滑块资源 vslider$bar.png、进度条资源 vslider $progress.png 及底图资源 vslider.png。

6、资源至少应当有两个,一个底图资源,一个滑块资源,否则无法实现滑动功能。缺少了进度条资源组件不会报错,只是不显示进度。

自定义资源

2018122816374130.gif

1、准备滑动条底图与滑动按钮,按钮采用一种状态值的形式,不进行切分,命名符合规范。尺寸没有强制要求,因为代码中可以修改大小。上面 vslider_me$bar.png 为 20 * 60,vslider_me.png 为 20 * 100。

  1. //初始化引擎,设置宽高并开启WebGL渲染模式
  2. Laya.init(600, 400, Laya.WebGL);
  3. Laya.stage.bgColor = "#FFF";//设置舞台背景颜色
  4. var hslider;//水平滑动条对象
  5. var label_Info;//标签对象
  6. var data = [];//存放自定义滑动条皮肤
  7. data.push("ui/vslider_me.png");//滑动条底图
  8. data.push("ui/vslider_me$bar.png");//滑动条按钮
  9. //加载自定义的皮肤资源,加载成功后执行onLoad回调方法
  10. Laya.loader.load(data, Laya.Handler.create(this, onLoaded));
  11. function onLoaded() {
  12. //同样创建水平滑动条对象,使用自定义垂直滑动条皮肤,也可以用 skin 属性设置
  13. hslider = new Laya.HSlider(data[0]);
  14. hslider.height = 300;//滑动条高度 300 px
  15. hslider.pos(50, 30);//显示位置
  16. hslider.min = 0;//获取或设置表示最低位置的数字。 默认值为0
  17. hslider.max = 120;//获取或设置表示最高位置的数字。 默认值为100
  18. hslider.value = 50;//获取或设置表示当前滑块位置的数字
  19. hslider.tick = 1;//滑动的刻度值,滑动数值为tick的整数倍。默认值为1
  20. /**
  21. * bar 属性获取滑动按钮,然后设置按钮的状态值,1 表示图片不做切割,按钮的皮肤状态只有一种
  22. */
  23. hslider.bar.stateNum = 1;//设置滑块按钮大小
  24. hslider.isVertical = true;//设置滑动条为垂直滑动条
  25. Laya.stage.addChild(hslider);//添加到舞台显示
  26. /**
  27. * changeHandler:数据变化处理器
  28. * 默认回调参数为滑块位置属性 value
  29. */
  30. hslider.changeHandler = new Laya.Handler(this, function (value) {
  31. label_Info.text = "音量:" + hslider.value;
  32. });
  33. showInfo();
  34. }
  35. //显示一个标签用于描述当前滑动的进度
  36. function showInfo() {
  37. label_Info = new Laya.Label();
  38. label_Info.text = "音量:" + hslider.value;
  39. label_Info.fontSize = 25;
  40. label_Info.color = "#252525";
  41. label_Info.pos(150, 50);
  42. Laya.stage.addChild(label_Info);
  43. }

20181228164110539.gif

示例使用资源图片:

20181228164138663.png

20181228164134512.png

发表评论

表情:
评论列表 (有 0 条评论,411人围观)

还没有评论,来说两句吧...

相关阅读