使用AudioSource组件怎么在所有场景中播放同一个声音文件?
现在我的问题是一切换场景,声音就不播放了,要每个场景中都添加一个AudioSource组件吗?
cc.Class({
extends: cc.Component,
properties: {
audioPlayer: {
default: null,
type: cc.AudioSource
},
musicFrame: {
default: null,
type: cc.SpriteAtlas
},
btnPlayAudio: {
default: null,
type: cc.Node
},
audioNode: {
default: null,
type: cc.Node
}
},
// use this for initialization
onLoad: function () {
cc.game.addPersistRootNode(this.audioNode);
this.btnPlayAudio.on(“touchstart”, this.playAudio, this);
this.autoAudioPlay();
},
playAudio: function () {
var btnSprite = this.btnPlayAudio.getComponent(cc.Sprite);
cc.log(this.audioPlayer.isPlaying)
if (this.audioPlayer.isPlaying) {
cc.log(“暂停播放”)
var frameStop = this.musicFrame.getSpriteFrame(‘musicstop’);
btnSprite.spriteFrame = frameStop;
this.audioPlayer.pause();
} else {
cc.log(“继续播放”)
var framePlay = this.musicFrame.getSpriteFrame(‘music’);
btnSprite.spriteFrame = framePlay;
this.audioPlayer.resume();
}
}, autoAudioPlay: function () {
if (!this.audioPlayer.isPlaying) {
this.audioPlayer.play();
cc.log(“开始播放”);
}
}, onDestroy: function () {
this.btnPlayAudio.off(“touchstart”, this.playAudio, this);
}
})
;
常驻节点要求AudioSource节点在根点上,我写的playAudio不能控制继续播放和暂停播放了,请帮忙看看!

你先自己调试一下有没有触发 play 跟 stop 的函数,还有你代码排版写好点,这样看起来真的很怪
例如这样:如果是代码用 ···js + ···
cc.Class({
extends: cc.Component,
properties: {
audioPlayer: {
default: null,
type: cc.AudioSource
},
musicFrame: {
default: null,
type: cc.SpriteAtlas
},
btnPlayAudio: {
default: null,
type: cc.Node
},
audioNode: {
default: null,
type: cc.Node
}
},
// use this for initialization
onLoad: function () {
cc.game.addPersistRootNode(this.audioNode);
this.btnPlayAudio.on("touchstart", this.playAudio, this);
this.autoAudioPlay();
},
playAudio: function () {
var btnSprite = this.btnPlayAudio.getComponent(cc.Sprite);
cc.log(this.audioPlayer.isPlaying)
if (this.audioPlayer.isPlaying) {
cc.log("暂停播放")
var frameStop = this.musicFrame.getSpriteFrame('musicstop');
btnSprite.spriteFrame = frameStop;
this.audioPlayer.pause();
}
else {
cc.log("继续播放")
var framePlay = this.musicFrame.getSpriteFrame('music');
btnSprite.spriteFrame = framePlay;
this.audioPlayer.resume();
}
},
autoAudioPlay: function () {
if (!this.audioPlayer.isPlaying) {
this.audioPlayer.play();
cc.log("开始播放");
}
},
onDestroy: function () {
this.btnPlayAudio.off("touchstart", this.playAudio, this);
}
});
我还是上图吧,这样看起来舒服些;
我再描述一下问,目前节点可以常驻成功,新场景也可以听到背景音乐,但是playAudio这个方法里this.audioPlayer.isPlaying的值一直为false,autoAudioPlay方法已经正常播放声音了,为什么isPlaying还是为false呢?
现在的问题是我不能暂停背景音乐,playAudio方法是可以触发的
@Knox
我测试了一下 isPlaying 是正常的
未播放时:

播放中:

AudioSource 和AudioEngine 哪一个适合用来做背景音乐?
这份代码我是调不好了,心累,有人说AudioEngine 这个来做背景音乐,不用常驻节点也可以?
可以结贴了,我用AudioEngine 做好了
if (GM.soundClickUrl == null){
cc.loader.loadRes(“audio/Common_Panel_Dialog_Pop_Sound”, cc.AudioClip, function (err, clip) {
cc.audioEngine.playEffect(clip, false);
GM.soundClickUrl = clip
});
} else {
cc.audioEngine.playEffect(GM.soundClickUrl, false);
}
为什么文档传送门点进去直接是官网首页?

