2012-12-05 9 views
2

我正在閱讀關於SoundEffect的這個教程:http://msdn.microsoft.com/en-us/library/bb195053.aspx但是,我從編譯器中獲得「內容」在當前上下文中不存在的錯誤。Content.Load在當前上下文中不存在

下面的代碼:

using Microsoft.Xna.Framework.Audio; 
using Microsfot.Xna.Framework.Content; 

namespace SoundTouchTest 
{ 
    class SoundTouchTest 
    { 
      public void loadContent() 
      { 
        SoundEffect s; 
        s = Content.Load<SoundEffect>("example"); 
      } 
    } 
} 

我已經成功地將引用(或至少我認爲我有)。任何想法,爲什麼發生這種情況?謝謝!

+0

一旦嘗試使用'Microsfot.Xna.Framework;'而不是'使用Microsfot.Xna.Framework.Content;' –

+0

不,沒有區別:( – m00nbeam360

回答

7

Content是一個屬性通常是指一類Game內部ContentManager類型的一個實例。由於您的SoundTouchTest類不是Game,因此不具有該屬性

你應該傳遞ContentManager實例作爲一個參數loadContent()方法:

void loadContent(ContentManager content) 
{ 
    SoundEffect e = content.Load<SoundEffect>("example"); 
} 

某處你Game類中:

SoundTouchTest soundTouchTest = new SoundTouchTest(); 
soundTouchTest.loadContent(this.Content); 
+0

真棒,這使得完美的感覺,謝謝!但是,當我調用靜態該類中的Main()方法並創建一個像你一樣的實例,編譯器不喜歡這樣。對不起,已經有一段時間了,那我該如何解決這個問題? :( – m00nbeam360

+0

這是我們談論的XNA遊戲項目嗎? – neeKo

+0

不是真的,說實話,但如果需要,我想我可以做到嗎?我只是想測試一下:http://msdn.microsoft。 com/en-us/library/dd940201.aspx。對不起,您可能會感到困惑。 – m00nbeam360

2

您既可以通過ContentManager作爲參數通過loadContent,然後在load1方法中調用loadContent,或者你可以創建一個新的實例(我不建議這樣做,每當你需要加載一些東西的時候,你都不想創建一個新的對象。對象已經爲你創建)。

相關問題