简体   繁体   English

PhoneGap Android LowLatencyAudio插件不起作用

[英]PhoneGap Android LowLatencyAudio plugin doesn't work

I'm building a mobile game with HTML5 and Javascript, for Android devices. 我正在为Android设备构建带有HTML5和Javascript的手机游戏。

Android doesn't support HTML5 Audio, that's why i've choose to use a phonegap plugin : https://github.com/phonegap/phonegap-plugins/tree/master/Android/LowLatencyAudio Android不支持HTML5音频,这就是为什么我选择使用phonegap插件的原因: https : //github.com/phonegap/phonegap-plugins/tree/master/Android/LowLatencyAudio

My structure is very simple, i've got 3 objects. 我的结构非常简单,我有3个对象。

  • game, which is my main object. 游戏,这是我的主要目标。
  • animation, which is my object where are all my sprites animations. 动画,这是我所有的精灵动画所在的对象。
  • sound, which all my sound are played, looped or stopped. 声音,播放,循环或停止我所有的声音。

Here, my index.html file : 在这里,我的index.html文件:

<!DOCTYPE HTML>
<html>
    <head>
    <title>Test</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
    <meta charset="UTF-8" />
    <link rel="stylesheet" type="text/css" href="assets/css/style.css">
    <script type="text/javascript" charset="UTF-8" src="cordova.js"></script>
    <script type="text/javascript" charset="UTF-8" src="PGLowLatencyAudio.js"></script>
    <script type="text/javascript" charset="UTF-8" src="assets/js/src/pixi.js"></script>
    <script type="text/javascript" charset="UTF-8" src="assets/js/game.js"></script>
    <script type="text/javascript" charset="UTF-8" src="assets/js/sound.js"></script>
    <script type="text/javascript" charset="UTF-8" src="assets/js/animation.js"></script>
    <script type="text/javascript" charset="UTF-8">
        function onDeviceReady(){
            PGLowLatencyAudio.preloadFX('drum','assets/son/drum/drumPiste1.mp3', game.sound.successHandler, game.sound.errorHandler);
        };
        function onBodyLoad(){
            document.addEventListener("deviceready",onDeviceReady,false);
        };
    </script>
</head>
<body onload="onBodyLoad()">
    <div id="wrapper"></div>
    <script type="text/javascript" charset="UTF-8">
        game.init();
        game.sound.init();
        game.animation.init();
    </script>
</body>

I'm using the PGLowLatencyAudio.preloadFX function of the plugin, to preload my mp3 file. 我正在使用插件的PGLowLatencyAudio.preloadFX函数来预加载我的mp3文件。

After, I call my init function of my object sound, which is like that : 之后,我调用对象声音的init函数,就像这样:

game.sound = {

    init: function(){
        soundsArray = [];
        game.sound.playSound();
    },

    successHandler: function(result){
        alert(result);
    },

    errorHandler: function(error){
        alert(error);
    },

    playSound: function(){
        PGLowLatencyAudio.play('drum', game.sound.successHandler, game.sound.errorHandler);
    },

};

In my init function, i call my playSound function, to play the sound i've previously preload. 在我的init函数中,我调用了playSound函数,以播放以前预先加载的声音。

It try to play sound before preload, but i don't understand why. 它尝试在预加载之前播放声音,但是我不明白为什么。

Error message is : A reference does not exist for the specified audio id . 错误消息是: A reference does not exist for the specified audio id

Here's the link , which i followed for a similar project earlier. 这是我先前在类似项目中遵循的链接 It has the solution to the problem ! 它有解决问题的方法!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM