【问题标题】:Getting started in Flash CS4 ProFlash CS4 Pro 入门
【发布时间】:2011-06-23 13:51:26
【问题描述】:

我需要一个非常简单的 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 Stream Reader。

我的问题是:我如何从这个 sn-p 代码转移到 Flash 应用程序?到目前为止,我发现的大多数教程要么是关于使用菜单,要么是关于创建非常复杂的动画。我只需要一个按钮来调用它,或者自动加载。

我在哪里可以获得直截了当的教程?我知道到处都会有大量的点击,但如果你能在这里解释一下,那就太棒了。

【问题讨论】:

    标签: flash actionscript


    【解决方案1】:

    我会像您第一次使用 Flash 一样进行解释。

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

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

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

    这是我在示例中使用的文档类的样子:

    package{
        import flash.display.Sprite;
    
        public class Main extends Sprite{
            public function Main(){
                trace("Application started!");
            }
        }
    }
    

    Main 类被实例化并调用构造函数,从而将“应用程序启动”跟踪到控制台。文档必须继承一个类,该类是DisplayObject 的子类。如果您希望能够使用框架操作,请使用MovieClip,如果您不打算在文档类中使用任何框架操作,请使用Sprite

    下一步是将您的代码移动到一个单独的类中,您可以从您的文档类中调用该类。所以你会得到这样的项目结构:

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

    在我的示例中,您可以阅读更多关于概念的信息:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2011-05-11
      • 2011-03-02
      • 1970-01-01
      • 2010-11-06
      • 2011-01-12
      相关资源
      最近更新 更多