Начало работы с Flash CS4 Pro - PullRequest
0 голосов
/ 23 июня 2011

Мне нужно что-то очень простое, как приложение 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. Это попытка сбрить более крупный продукт. Эта демонстрация поможет третьей стороне создать RTMP Stream Reader для mp3.

Мой вопрос: как мне перейти от этого фрагмента кода к приложению flash? Большинство учебных пособий, которые я нашел до сих пор, касалось либо использования меню, либо создания очень сложных анимаций. Мне просто нужна одна кнопка, которая вызовет это, или, может быть, автозагрузка.

Где я могу получить простой учебник? Я понимаю, что везде будет много щелчков, но если бы вы могли объяснить это здесь, это было бы здорово.

1 Ответ

1 голос
/ 23 июня 2011

Я объясню, как будто вы впервые работаете со вспышкой.

Как и любой другой язык, у вас есть какой-то файл начальной загрузки и основная функция. Во Flash у вас есть то, что называется классом документа. Класс документа вызывается при запуске приложения. Подробнее об этом можно прочитать здесь .

Чтобы использовать класс документа, вы указываете его в свойствах вашего .fla файла, например:

Flash settings

Это говорит Flash, что он должен использовать класс Main в файле Main.as в качестве класса документа.

Вот как выглядит класс документа, который я использую в примере:

package{
    import flash.display.Sprite;

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

Класс Main создается, и вызывается конструктор, и, таким образом, трассировка «Приложение запущено» в консоли. Документ должен наследовать класс, который является подклассом 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, он содержит некоторые ошибки, которые вам нужно просмотреть.

Понятие в моем примере вы можете прочитать больше о:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...