Я объясню, как будто вы впервые работаете со вспышкой.
Как и любой другой язык, у вас есть какой-то файл начальной загрузки и основная функция. Во Flash у вас есть то, что называется классом документа. Класс документа вызывается при запуске приложения. Подробнее об этом можно прочитать здесь .
Чтобы использовать класс документа, вы указываете его в свойствах вашего .fla файла, например:
Это говорит Flash, что он должен использовать класс Main
в файле Main.as
в качестве класса документа.
Вот как выглядит класс документа, который я использую в примере:
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
, он содержит некоторые ошибки, которые вам нужно просмотреть.
Понятие в моем примере вы можете прочитать больше о: