常驻节点设置好背景音乐后,如何用按钮进行暂停和开启播放播放

cocos2x,版本2.4.9
测试常驻节点设置的背景音乐播放,正常后,如何设置个按钮控制(常驻节点)设置的背景音乐。比如点击这个按钮,背景音乐关闭,再点击则开启。我知道需要挂一个js在按钮上,但是获取常驻节点不成功呀,点击没反应:
click_but(){
this.AudioPlayer = cc.find(“Audio”).getComponent(“miu”);
this.AudioPlayer.stopBgMusic();
},
这是我挂载在按钮上的代码,(“mic”是挂载常驻节点Audio上的代码),求大神教一下详细的方法和代码,小弟感激不尽!!

实现一个全局播放模块

1赞

常驻节点了解下,。,

1赞

看这个https://forum.cocos.org/t/topic/140654/2?u=ivvv

1赞

好的,谢谢哦

如何获取常驻节点里的音乐脚本节点,如何在另外一个场景获取呢?
在第二个场景添加一个js代码该怎么写能控制音乐的关闭和开启?求大佬!!

在任何地方都可以调用这个代码

你好,那请问下,我要调用这个常驻节点Audio里面的mic,之后怎么控制背景音乐的关闭呢,我下面那个代码对吗?



这是第二个场景的按钮上挂的代码,这样写能获取到吗?(我试了这样出不来)
麻烦大佬看一下 :heartbeat:

效果出不来,这里代码走到了吗,你 console.log() 一下this.AudioPlayer是不是个对象,以及this.AudioPlayer.name

this.AudioPlayer.BgMusic这个变量在哪里定义的,没看到你的 miu 脚本里有 BgMusic 这个属性啊

this.AudioPlayer.BgMusic这句话我想的是,因为AudioPlayer是获取常驻节点的这个mic


所以我想把mic里面的这个BgMusic给stop掉,BgMusic是定义的一个常量用来放BGM的嘛

console了之后能输出,找到的常驻节点,就是播放和停止语句错误了,您看下
image



这咋整哇,wuwuwu

你这里的 AudioPlayer 是个脚本对象,不是 AudioClip 的.你改成 this.AudioPlayer.bgMusic.play stop

代码处变量叫 bgMusic,操作面板上显示 Bg Music,所以你的 BgMusic是不存在的,按照代码里的来,另外你应该是个初学者,建议直接创建 TypeScript 脚本,js 写法怎么改成 ts写法看
使用 TypeScript 脚本 · Cocos Creator

再给你贴一个 ts 代码参考
新建文件 typescript,文件名BGM.ts

const { ccclass, property } = cc._decorator;

@ccclass
export default class BGM extends cc.Component {

    @property(cc.AudioClip)
    bgMusic: cc.AudioClip = null;

    static _instance: cc.AudioSource = null;

    onLoad() {
        cc.game.addPersistRootNode(this.node);

        let audioSource = this.node.getComponent(cc.AudioSource) || this.node.addComponent(cc.AudioSource)
        audioSource.clip = this.bgMusic;
        audioSource.play();
        BGM._instance = audioSource;

        console.log('BGM init finish');
    }


    static play() {
        this._instance && this._instance.play();
    }
    static stop() {
        this._instance && this._instance.stop();
    }
    static pause() {
        this._instance && this._instance.pause();
    }
    static resume() {
        this._instance && this._instance.resume();
    }
}

/*
    console.log('BGM init finish');
    执行时机在上面这个日志打印后,外部任意脚本处都可以调用下面 4 个方法
    BGM.play();
    BGM.stop();
    BGM.pause();
    BGM.resume();
*/

好的,非常感谢