专栏首页拂晓风起cocos2d-js 3.0 rc2 自定义UI控件组件 例子:能播放动画的MenuItem。MenuItemSprite的bug

cocos2d-js 3.0 rc2 自定义UI控件组件 例子:能播放动画的MenuItem。MenuItemSprite的bug

其实总体自定义UI组件都比较简单,尤其是cocos2d-js是开源的,如果有什么不明白的直接看js代码或者C++代码即可。当然js代码基本就够了。

另外,js的ctor函数虽然说是构造函数,但毕竟不是flash或者c++的构造函数,这只是一个普通函数,也就是说可以不在第一行默认调用,这就给扩展带来了不少方便。

现在想做一个声音按钮,点一下能关闭音乐,再点一下又能打开。当然就是MenuItemToggle了。

但想做得再炫一点,有声音的时候,按钮的样子能有几个音波的变化。那么就需要用MenuItemSprite,尝试自己做一个自定义的Sprite。不过,过程中发现这个MenuItemSprite有不少坑,大家需要注意(详细看代码)。(补充:以下代码只适用于html5版本,后来发现jsb版本对MenuItemSprite的初始化更严格一些,不能为null)

var SoundButton = cc.MenuItemToggle.extend({

    ctor:function(){
        var sprite = new cc.Sprite("#soundOn0000.png");     //先设置默认图片,否则鼠标响应有问题
        var animation = new cc.Animation();
        animation.addSpriteFrame(cc.spriteFrameCache.getSpriteFrame("soundOn0000.png"));
        animation.addSpriteFrame(cc.spriteFrameCache.getSpriteFrame("soundOn0001.png"));
        animation.addSpriteFrame(cc.spriteFrameCache.getSpriteFrame("soundOn0002.png"));
        animation.setDelayPerUnit(1/3);
        var action = cc.animate(animation).repeatForever();
        sprite.runAction(action);

        this._super(new cc.MenuItemSprite(sprite, null, null), new cc.MenuItemImage("#soundOff.png"));  //MenuItemSprite有bug,必须设置3个参数才能用,跟MenuItemImage不一样
        this.setCallback(this._soundOnOff, this);   //这样可以设置callback的target
    },

    _soundOnOff:function() {
        Sound.toggleOnOff();
    }
});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Word2007 设置Tab键的默认缩进距离

    用户1258909
  • cocos2d-js 3.0 RC0 监听返回键、菜单键、进入后台(home键)、恢复显示等事件

    用户1258909
  • IE6 PNG不透明问题 (只解决img标签的图片)

    用户1258909
  • 关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁

    首先分布式锁和我们平常讲到的锁原理基本一样,目的就是确保,在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。

    梁规晓
  • 《中午吃什么?》制作一个简单的chrome扩展

    有人找你解决一个小问题,你可能花几分钟编程,完美解决,但对方的计算机却没有程序运行的环境,有些老旧windows系统,甚至不能安装环境... 最好的解决方式...

    zhaoolee
  • 史上最通俗分布式锁解读

    首先,分布式锁和我们平常讲到的锁原理基本一样,目的就是确保在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。

    数据和云
  • 没用过分布式锁?那你该好好看看这篇文章。

    原文:https://www.cnblogs.com/JJJ1990/p/10496850.html

    黄泽杰
  • 关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁

    在一个进程中,也就是一个jvm或者说应用中,我们很容易去处理控制,在jdkjava.util并发包中已经为我们提供了这些方法去加锁,比如synchronized...

    IT大咖说
  • 性能工具之JMeter5.0核心源码浅析

    周末无聊看了下 JMeter5.0 的源码,本文就当做个小结,水平有限,如有理解不到位或错误的的地方,望大家指出,谢谢。

    高楼Zee
  • 好大一棵树,新春的祝福(一):n级分类的数据结构

         这个树的结构几年前在csdn里面也发过了一次,现在看看,主体结构居然没有什么变化,用了这么长的时间,自我感觉还是很好用的。而且在这个基础之上把其他的功...

    用户1174620

扫码关注云+社区

领取腾讯云代金券