Flash CS4 Pro入门

时间:2011-06-23 13:51:27

标签: flash actionscript

我需要一些非常简单的Flash应用程序。

只需一个按钮即可调用动作脚本。该动作脚本将调用

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 个答案:

答案 0 :(得分:1)

我会解释好像是你第一次使用flash。

与任何其他语言一样,您有某种引导程序文件和主要功能。在Flash中,您有一种称为文档类的东西。应用程序启动时会调用文档类。 Read more about that here

要使用文档类,请在.fla文件的属性中指定它,如下所示:

Flash settings

这告诉flash它应该使用文件Main中的类Main.as作为文档类。

以下是我在示例中使用的文档类:

package{
    import flash.display.Sprite;

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

Main类被实例化并调用构造函数,从而跟踪“Application started”到控制台。该文档必须继承一个类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类,它包含您需要查看的一些错误。

我的例子中的概念你可以阅读更多关于: