我的目标是创建一个Asteroids克隆,我有游戏集,就像在chrism网络教程中找到的那样。我几乎完全设置了游戏,但是,当我添加声音时,该程序会抱怨以下错误。
\ src \ Main.as(21):col:3错误:访问未定义的属性soundClip。
\ src \ Main.as(20):col:17错误:未找到类型或不是编译时常量:声音。
代码如下所示:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
/**
* ...
* @author Chris Moeller
* http://www.chrismweb.com
* Tutorial: Creating an Asteroids Game: Part 4
*/
public class Main extends Sprite
{
[Embed(source = "snd/9mmshot.mp3")]
private const embeddedSound:Class;
var soundClip:Sound = new embeddedSound(); // Bullet
soundClip.play(); // Play the sound
private var game:Game;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
//create the game object passing in the swf width and height
game = new Game(stage.stageWidth, stage.stageHeight);
//add the game bitmap to the screen/ Main.as Sprite to make it visible
addChild(game.bitmap);
//Create the main game loop
addEventListener(Event.ENTER_FRAME, Run);
//add keylisteners
stage.addEventListener(KeyboardEvent.KEY_DOWN, game.KeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, game.KeyUp);
stage.addEventListener(MouseEvent.MOUSE_DOWN, game.MouseDown);
stage.addEventListener(MouseEvent.MOUSE_UP, game.MouseUp);
stage.addEventListener(MouseEvent.MOUSE_MOVE, game.MoveMouse);
}
private function Run(e:Event):void
{
game.Update();
game.Render();
}
}
}
我已经尝试过研究这个问题但没有运气,我甚至检查了一些使用该程序添加声音教程。
我甚至降低了网上的音质
但这里没有运气,我不知道发生了什么。请帮忙!! 任何帮助将非常感谢! 我使用在线音频转换器来转换音频。
答案 0 :(得分:1)
为避免您的第一次错误(Error: Type was not found or was not a compile-time constant: Sound.
),您必须将Sound
课程导入到您的课程中:
// ...
import flash.media.Sound;
对于第二个错误,您应该知道不能在函数外部使用soundClip
对象,该部分只是声明(并初始化)您的对象,因此您可以这样做,例如:
private function shotFunction(): void
{
soundClip.play();
}
希望可以提供帮助。