AS3为什么声音效果在Android上不起作用?

问题描述

我使用Adobe Animate和AS3构建了一个相当简单的应用程序,其中包含许多按钮,在点击它们时应该会发出声音。在运行应用程序测试时,声音效果很好。但是在Android模拟器或Android设备上测试/调试应用时,声音不起作用。

名为“ click.mp3”的声音文件已加载到Animate的库中。它具有一个名为“ Click”的类文件screenshot of the sound setting in Animate

这是我的代码的示例。

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; //importing touch mode
import flash.events.TouchEvent;
import flash.display.Sprite; //importing sprite mode
import flash.text.textformat;

var mysound: Click = new Click(); // Sound mode

var sumButton: int; // Variable for Master Sum button 
var digiButton: int; // Variable for Master Digi Button
var masterarray: Array = new Array(); //Master array veriable
sumButton = 0;
digiButton = 0;

// Text Format for the sum buttons --------------------------------------------------------------------------
var newFormat: textformat = new textformat();
newFormat.size = 52;
newFormat.font = "Arial";
newFormat.align = "center";

//Sum Button 2 ------------------------------------------------
var square2: Sprite = new Sprite();
square2.graphics.beginFill(0x666666);
square2.graphics.drawRect(20,190,65,65);
square2.graphics.endFill();
square2.buttonMode = true;
square2.addEventListener(TouchEvent.TOUCH_TAP,myTap2);

var myTF2: TextField = new TextField();
myTF2.x = 20;
myTF2.y = 190;
myTF2.width = 65;
myTF2.height = 65;
myTF2.border = true;
myTF2.borderColor = 0x10AD63;
myTF2.textColor = 0xFFFF99;
myTF2.wordWrap = false;
myTF2.appendText("2");
myTF2.settextformat(newFormat);

square2.addChild(myTF2);
this.addChild(square2);

function myTap2(event: TouchEvent): void {
    sumButton = 2;
    mysound.play();

}

这是该类“点击”代码的外观:

package  {
    
    import flash.media.sound;
    
    
    public class Click extends Sound {
        
        
        public function Click() {
            // constructor code
        }
    }
    
}

为什么声音不能在Android上播放?

解决方法

解决方案是检查“发布设置”上的“替代声音设置”设置。

Sound setting on the Publish Settings

,

为避免使用覆盖声音设置,请将您的MP3变量声明为Sound数据类型。

//# correct... play works as expected
var mysound: Sound = new Click();

//# wrong... play needs override to work 
var mysound: Click = new Click();