2011-06-23 4 views
0

J'ai besoin de quelque chose de très simple en tant qu'application Flash.Mise en route dans Flash CS4 Pro

Juste un seul bouton qui appellera un script d'action. Ce script d'action appellera

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); 
    } 
} 

Je pense que c'est la configuration la plus simple que je puisse obtenir qui publiera un microphone sur un flux RTMP. C'est une tentative de raser un plus gros produit. Cette démo aidera un tiers à créer un RTMP Stream Reader pour mp3.

Ma question est: Comment passer de cet extrait de code à une application flash? La plupart des tutoriels que j'ai trouvés jusqu'à présent concernaient l'utilisation de menus ou la création d'animations très complexes. J'ai juste besoin d'un seul bouton qui appellera cela, ou peut-être un chargement automatique.

Où puis-je obtenir un didacticiel simple? Je comprends qu'il y aura beaucoup de clics partout, mais si vous pouviez l'expliquer ici, ce serait génial.

Répondre

1

Je vais vous expliquer comme si c'était la première fois que vous utilisiez le flash.

Comme toute autre langue, vous avez une sorte de fichier bootstrap et une fonction principale. Dans Flash, vous avez quelque chose appelé une classe de document. La classe de document est appelée lorsque l'application est démarrée. Read more about that here.

Pour utiliser une classe de document que vous spécifiez dans les propriétés de votre fichier fla, comme ceci:

Flash settings

Cela indique le flash qu'il doit utiliser la classe Main dans le fichier Main.as que le document classe.

Voici ce que la classe de document ressemble que j'utilise dans l'exemple:

package{ 
    import flash.display.Sprite; 

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

La classe Main obtient instancié et le constructeur est appelé, et traçant ainsi « Application commencé » à la console. Le document doit hériter d'une classe qui est une sous-classe de DisplayObject. Si vous souhaitez utiliser les opérations d'image, utilisez MovieClip et si vous n'utilisez aucune opération d'image dans votre classe de document, utilisez Sprite.

L'étape suivante consiste à déplacer votre code dans une classe distincte que vous pouvez appeler à partir de votre classe de document. Donc, vous obtiendrez une structure de votre projet comme celui-ci:

Project structure

Votre MicrophoneRTMP.as ressemblera à quelque chose comme ceci:

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"); 
     } 
    } 
    } 
} 

Ensuite il vous suffit de modifier votre Main.as pour importer et appeler votre classe :

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(); 
     } 
    } 
} 

note: Maintenant, vous serez en mesure de compiler votre projet et commencer à déboguer votre classe MicrophoneRTMP, il contient des erreurs que vous devez regarder.

Concept dans mon exemple, vous pouvez en savoir plus sur: