CocosCreator-Slider的使用

关于cocos中的UI组件-Slider

目标:使用Slider控制音量

记录自己使用cocos的学习历程

遇到的麻烦

  1. button组件和slider组件的监听事件方式有差异

  2. 原生Slider组件没有Fill填充内容物

Slider的监听事件

this.sliderMusicVolume!.node.on('slide', this.onMusicValumeChange,this);

...

onMusicValumeChange(slider : Slider){
    AudioManager.instance().setMusicVolume(slider.progress);
}

Button的监听事件


this.buttonPlay!.node.on(Button.EventType.CLICK, this.onPlayMusic, this);

...

onPlayMusic() : void{
    AudioManager.instance().playMusic(musicPath);
}

Slider的填充

思路:通过自己制作填充图片,然后用代码调用slide事件进行填充

步骤:

  1. 裁切一个填充图片(纯色)
  2. 编写一个myslider脚本,代码如下
@ccclass('MySlider')
export class MySlider extends Component {
    slider : Slider;
    fill : Sprite;

    protected onLoad(): void {
        this.slider = this.node.getComponent(Slider);
        this.fill = this.node.getChildByName("Fill").getComponent(Sprite);

        this.node.on('slide', this.onSlide, this);

        this.fill.fillRange = this.slider.progress;
    }
    
    protected onDestroy(): void {
        this.node.off('slide', this.onSlide, this);
    }


    private onSlide(slider: Slider) {
       this.fill.fillRange = slider.progress;
    }
}

  1. 将填充图片对齐

注意

onDestroy中应该把this.slider.node.off(xxx);改为this.node.off(xxx);

否则会因为slider先被消除而产生无法获取node,因为产生事件的事node而不是slider,所以这样也可以成功触发事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值