2011-06-23 41 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类,它包含一些您需要查看的错误。

概念在我的例子,你可以阅读更多有关: