2015-12-08 144 views
1

我的目標是創建一個小行星克隆,我有遊戲設置,在chrism web教程中找到。我有幾乎完全設置的遊戲,但是,當我添加聲音時,程序抱怨出現以下錯誤。FlashDevelop聲音問題

\src\Main.as(21): col: 3 Error: Access of undefined property soundClip.

\src\Main.as(20): col: 17 Error: Type was not found or was not a compile-time constant: Sound.

的代碼如下所示:

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();    
     } 
    } 
} 

我試圖研究這個問題,在這裏沒有運氣,我甚至檢查使用一些程序添加聲音的教程。

如發現網上

但這裏沒有運氣,我不知道發生了什麼事我甚至減少音質。請幫忙!! 任何幫助將不勝感激! 我用在線音頻轉換器來轉換音頻。

回答

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(); 
} 

希望能有所幫助。

+0

的第一個錯誤是固定的,但是,現在該程序將啓動一個警告,說,\ SRC \ Main.as(21)抱怨西:7警告:VAR「soundClip」將範圍限定爲默認命名空間:主:內部。它在這個包之外是不可見的。我現在有以下代碼公共類主要擴展Sprite \t { \t \t [嵌入(源= 「SND/9mmshot.mp3」)] \t \t \t 私人\t常量embeddedSound:類; \t \t var soundClip:Sound = new embeddedSound(); //子彈 \t \t private function shotFunction():void { soundClip.play(); }研究沒有幫助,但錯誤消失了。請幫幫我!!我幾乎解決這個問題! –

+0

@JohnDoeLuis你可以把它'public':'公共變種soundClip:;西:19錯誤:屬性聲音=新embeddedSound()'... – akmozo

+0

該計劃現在有了這個的\ src \ Main.as(21)抱怨是無效的,我幾乎沒有出錯。請幫忙!!完整代碼是在這裏(」。公共類主要擴展Sprite \t { \t \t [嵌入(源= 「SND/9mmshot.mp3」)] \t \t \t 私人\t常量embeddedSound:類; \t \t公共:公共VAR soundClip:聲音=新embeddedSound(); // PlaySound \t \t \t \t私人變種遊戲:遊戲; \t \t公共函數main():無效「)。我的最終目標是聲音加入到遊戲中。 –