cocos2x,版本2.4.9
测试常驻节点设置的背景音乐播放,正常后,如何设置个按钮控制(常驻节点)设置的背景音乐。比如点击这个按钮,背景音乐关闭,再点击则开启。我知道需要挂一个js在按钮上,但是获取常驻节点不成功呀,点击没反应:
click_but(){
this.AudioPlayer = cc.find(“Audio”).getComponent(“miu”);
this.AudioPlayer.stopBgMusic();
},
这是我挂载在按钮上的代码,(“mic”是挂载常驻节点Audio上的代码),求大神教一下详细的方法和代码,小弟感激不尽!!
实现一个全局播放模块
1赞
常驻节点了解下,。,
1赞
好的,谢谢哦
如何获取常驻节点里的音乐脚本节点,如何在另外一个场景获取呢?
在第二个场景添加一个js代码该怎么写能控制音乐的关闭和开启?求大佬!!
在任何地方都可以调用这个代码
效果出不来,这里代码走到了吗,你 console.log() 一下this.AudioPlayer是不是个对象,以及this.AudioPlayer.name
this.AudioPlayer.BgMusic这个变量在哪里定义的,没看到你的 miu 脚本里有 BgMusic 这个属性啊
this.AudioPlayer.BgMusic这句话我想的是,因为AudioPlayer是获取常驻节点的这个mic
所以我想把mic里面的这个BgMusic给stop掉,BgMusic是定义的一个常量用来放BGM的嘛
你这里的 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();
*/
好的,非常感谢