lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4771|回复: 2
打印 上一主题 下一主题

Lsound问题,安卓不正常

[复制链接]

4

主题

0

好友

52

积分

士兵

Rank: 1

跳转到指定楼层
楼主
发表于 2016-7-31 21:13:49 |只看该作者 |倒序浏览
本帖最后由 Rain_Golden 于 2016-7-31 22:45 编辑

今天我做了个小游戏,在IOS里打开能放背景音乐,在安卓里,应该报错了,游戏JS进行不下去。但看不到报的什么错,去掉播放音乐的就正常了

用的RunningGirl里的soundplayer
function main() {
//预读取音频
        var loadsound = true;
        var protocol = location.protocol;
        if (protocol == "http:" || protocol == "https:") {
                if (LGlobal.ios && !LSound.webAudioEnabled){
                        //如果IOS环境,并且不支持WebAudio,则无法预先读取
                        loadsound = false;
                }
        } else if (LGlobal.mobile) {
                //如果是移动浏览器本地访问,则无法预先读取
                loadsound = false;
        }
        if(loadsound){
                loadData.push({name : "sound_background",path : "sound/background.mp3"});
                if(LSound.webAudioEnabled || LGlobal.os == OS_PC){
                        //浏览器支持WebAudio,或者环境为PC,则预先读取所有音频
                        loadData.push({name : "sound_fly",path : "sound/fly.mp3"});
                        loadData.push({name : "sound_gameover",path : "sound/gameover.mp3"});
                        loadData.push({name : "sound_get",path : "sound/get.mp3"});
                        loadData.push({name : "sound_jump",path : "sound/jump.mp3"});
                }
        }
}
  1. /**
  2. * @author lufy
  3. */
  4. function SoundPlayer(){
  5.         var self = this;
  6.         self.loadIndex = 0;
  7.         self.background = new LSound();
  8.         self.background.parent = self;
  9.         //如果IOS环境,并且不支持WebAudio,则没有预先读取的音频
  10.         if(LGlobal.ios && !LSound.webAudioEnabled){
  11.                 return;
  12.         }
  13.         //如果没有预先读取的音频
  14.         if(!dataList["sound_background"]){
  15.                 return;
  16.         }
  17.         self.background.addEventListener(LEvent.COMPLETE,self.backgroundLoadComplete);
  18.         self.background.load(dataList["sound_background"]);
  19.         //如果是移动浏览器,并且不支持WebAudio,则无法适用多声道,所以只适用背景音乐
  20.         if(LGlobal.mobile && !LSound.webAudioEnabled){
  21.                 return;
  22.         }
  23.         self.get = new LSound();
  24.         self.get.parent = self;
  25.         self.fly = new LSound();
  26.         self.fly.parent = self;
  27.         self.jump = new LSound();
  28.         self.jump.parent = self;
  29.         self.gameover = new LSound();
  30.         self.gameover.parent = self;
  31.         self.jump.addEventListener(LEvent.COMPLETE,self.jumpLoadComplete);
  32.         self.jump.load(dataList["sound_jump"]);
  33.         self.get.addEventListener(LEvent.COMPLETE,self.getLoadComplete);
  34.         self.get.load(dataList["sound_get"]);
  35.         self.fly.addEventListener(LEvent.COMPLETE,self.flyLoadComplete);
  36.         self.fly.load(dataList["sound_fly"]);
  37.         self.gameover.addEventListener(LEvent.COMPLETE,self.gameoverLoadComplete);
  38.         self.gameover.load(dataList["sound_gameover"]);
  39. }
  40. SoundPlayer.prototype.loadSound = function(){
  41.         var self = this;
  42.         //如果PC环境,或者支持WebAudio,则已经预先读取了音频,无需再次读取
  43.         if(LSound.webAudioEnabled || LGlobal.os == OS_PC){
  44.                 if (LGlobal.mobile){
  45.                         switch(self.loadIndex++){
  46.                                 case 0:
  47.                                         self.get.play(self.get.length);
  48.                                         break;
  49.                                 case 1:
  50.                                         self.fly.play(self.fly.length);
  51.                                         break;
  52.                                 case 2:
  53.                                         self.gameover.play(self.gameover.length);
  54.                                         break;
  55.                         }
  56.                 }
  57.                 return;
  58.         }
  59.         //已读取音频,无需再次读取
  60.         if(self.loadIndex > 0 ){
  61.                 return;
  62.         }
  63.         self.loadIndex++;
  64.         self.background.addEventListener(LEvent.COMPLETE,self.backgroundLoadComplete);
  65.         self.background.load("./sound/background.mp3");
  66. };
  67. SoundPlayer.prototype.playSound = function(name){
  68.         var self = this;
  69.         switch(name){
  70.                 case "get":
  71.                         if(!self.getIsLoad)return;
  72.                         self.get.play(0,1);
  73.                         break;
  74.                 case "fly":
  75.                         if(!self.flyIsLoad || self.fly.playing)return;
  76.                         self.fly.play(0,1);
  77.                         break;
  78.                 case "jump":
  79.                         if(!self.jumpIsLoad)return;
  80.                         self.jump.play(0,1);
  81.                         break;
  82.                 case "gameover":
  83.                         if(!self.gameoverIsLoad)return;
  84.                         self.gameover.play(0,1);
  85.                         break;
  86.                 case "background":
  87.                         if(!self.backgroundIsLoad)return;
  88.                         self.background.close();
  89.                         self.background.play(0,100);
  90.                         break;
  91.         }
  92. };
  93. SoundPlayer.prototype.backgroundLoadComplete = function(event){
  94.         var self = event.currentTarget;
  95.         self.parent.backgroundIsLoad = true;
  96.         self.play(0,100);
  97. };
  98. SoundPlayer.prototype.getLoadComplete = function(event){
  99.         var self = event.currentTarget;
  100.         self.parent.getIsLoad = true;
  101. };
  102. SoundPlayer.prototype.flyLoadComplete = function(event){
  103.         var self = event.currentTarget;
  104.         self.parent.flyIsLoad = true;
  105. };
  106. SoundPlayer.prototype.jumpLoadComplete = function(event){
  107.         var self = event.currentTarget;
  108.         self.parent.jumpIsLoad = true;
  109. };
  110. SoundPlayer.prototype.gameoverLoadComplete = function(event){
  111.         var self = event.currentTarget;
  112.         self.parent.gameoverIsLoad = true;
  113. };
复制代码
MySoundPlayer = new SoundPlayer();
        // MySoundPlayer.playSound('background');
        MySoundPlayer.background.play();
回复

使用道具 举报

4

主题

0

好友

52

积分

士兵

Rank: 1

沙发
发表于 2016-7-31 21:15:18 |只看该作者
PC也正常,去掉音乐播放后,安卓也正常,什么原因呢,安卓4.3
回复

使用道具 举报

37

主题

8

好友

9326

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

板凳
发表于 2016-7-31 22:43:38 |只看该作者
Rain_Golden 发表于 2016-7-31 21:15
PC也正常,去掉音乐播放后,安卓也正常,什么原因呢,安卓4.3

你贴出来的代码都是我demo里的代码,
没有你自己的代码,我怎么给你找原因呢?
不回答与技术和引擎不相关的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-30 17:12 , Processed in 0.045785 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部