2011-06-23 74 views
0

我需要一些非常簡單的Flash應用程序。Flash CS4 Pro入門

只需一個按鈕即可調用操作腳本。該行動腳本將呼籲

private var m_MicCnx:NetConnection;   //connection over the server 
private var m_MicStream:NetStream;   //Audio Output 
private var m_Microphone:Microphone;  //micro, attach with m_MicStream's audio content 

m_MicCnx =new NetConnection(); 
m_MicCnx.client = this; 
m_MicCnx.addEventListener(NetStatusEvent.NET_STATUS,HandlerMicCnxStatus); 
m_MicCnx.connect(m_strMicUrl); 
m_MicStream.publish ("mp3:myStream", "live"); 


m_Microphone=Microphone.getMicrophone(); 
m_Microphone.gain=85; 
m_Microphone.rate=11; 
m_Microphone.setSilenceLevel(15,2000); 

private function HandlerMicCnxStatus(e:NetStatusEvent):void 
{ 
    var isConnected:Boolean;  //tells whether the connection has succeded 

    isConnected=e.info.code=="NetConnection.Connect.Success"; 
    if (isConnected) 
    { 
     m_MicStream=new NetStream(m_MicCnx); 
     m_MicStream.attachAudio (m_Microphone); 
    } 
} 

我認爲這是我可以得到的最簡單的設置,將麥克風發佈到RTMP流。這是試圖削減更大的產品。此演示將幫助第三方爲mp3創建一個RTMP流讀取器。

我的問題是:如何從這段代碼移動到Flash應用程序?到目前爲止,我發現的大多數教程都是關於使用菜單或創建非常複雜的動畫。我只需要一個可以調用它的按鈕,或者是一個自動加載的按鈕。

我在哪裏可以得到一個簡單的教程?我知道每個地方都會有一堆點擊,但如果你能在這裏解釋它,那就太棒了。

回答

1

我會解釋你是否第一次使用flash。

像任何其他語言一樣,你有某種引導文件和主要功能。在Flash中你有一些叫做文檔類的東西。文檔類在應用程序啓動時被調用。 Read more about that here

要使用的文檔類,您可以指定它在你的FLA文件的屬性,就像這樣:

Flash settings

這告訴閃光,它應該使用類Main文件Main.as中的文件類。

這裏的文檔類的樣子,我使用的例子:

package{ 
    import flash.display.Sprite; 

    public class Main extends Sprite{ 
     public function Main(){ 
      trace("Application started!"); 
     } 
    } 
} 

Main類被實例化,並調用構造函數,從而追蹤「應用啓動」控制檯。該文件必須繼承DisplayObject的子類。如果您希望能夠使用框架操作,請使用MovieClip,如果您不打算在文檔類中使用任何框架操作,請使用Sprite

下一步是將您的代碼移動到您可以從文檔類中調用的單獨的類。所以,你會得到你的項目是這樣的結構:

Project structure

MicrophoneRTMP.as會是這個樣子:

package{ 
    import flash.net.NetConnection; 
    import flash.net.NetStream; 
    import flash.media.Microphone; 
    import flash.events.NetStatusEvent; 

    public class MicrophoneRTMP{ 
    private var m_MicCnx:NetConnection;   
    private var m_MicStream:NetStream;   
    private var m_Microphone:Microphone; 

    public function MicrophoneRTMP(){ 
     this.setupMicrophone(); 
     this.setupConnection(); 
    } 

    private function setupMicrophone():void{ 
     m_Microphone = Microphone.getMicrophone(); 
     m_Microphone.gain = 85; 
     m_Microphone.rate = 11; 
     m_Microphone.setSilenceLevel(15,2000); 
    } 

    private function setupConnection():void{ 
     m_MicCnx = new NetConnection(); 
     m_MicCnx.client = this; 
     m_MicCnx.addEventListener(NetStatusEvent.NET_STATUS,HandlerMicCnxStatus); 
     m_MicCnx.connect(m_strMicUrl); 
     m_MicStream.publish("mp3:myStream", "live"); 
    } 

    private function HandlerMicCnxStatus(e:NetStatusEvent):void{ 
     var isConnected:Boolean; 
     isConnected = e.info.code == "NetConnection.Connect.Success"; 
     if(isConnected){ 
      m_MicStream = new NetStream(m_MicCnx); 
      m_MicStream.attachAudio(m_Microphone); 
      trace("Microphone stream successful"); 
     }else{ 
      trace("Microphone stream unsuccessful"); 
     } 
    } 
    } 
} 

那麼你只需要改變你的Main.as導入並調用你的類:

package{ 
    import flash.display.Sprite; 
    import MicrophoneRTMP; 

    public class Main extends Sprite{ 
     public function Main(){ 
      myButton.addEventListener(MouseEvent.CLICK, myButtonClicked); //myButton is a button put on the stage in Flash 
     } 

     private function myButtonClicked(event:MouseEvent):void{ 
      trace("My button was clicked"); 
      var microphoneRTMP:MicrophoneRTMP = new MicrophoneRTMP(); 
     } 
    } 
} 

注: 現在您將能夠編譯您的項目並開始調試MicrophoneRTMP類,它包含一些您需要查看的錯誤。

概念在我的例子,你可以閱讀更多有關: