我需要一些非常简单的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应用程序?到目前为止,我发现的大多数教程都是关于使用菜单或创建非常复杂的动画。我只需要一个可以调用它的按钮,或者可能是自动加载。
我在哪里可以获得直接的教程?据我所知,到处都会有大量的点击,但是如果你能在这里解释它会很棒。
答案 0 :(得分:1)
我会解释好像是你第一次使用flash。
与任何其他语言一样,您有某种引导程序文件和主要功能。在Flash中,您有一种称为文档类的东西。应用程序启动时会调用文档类。 Read more about that here
要使用文档类,请在.fla文件的属性中指定它,如下所示:
这告诉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
。
下一步是将代码移动到可以从文档类调用的单独类中。所以你将得到一个像你这样的项目结构:
您的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
类,它包含您需要查看的一些错误。
我的例子中的概念你可以阅读更多关于: