![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Nov 2013
Сообщений: 5
|
Всем здравствуйте.
Помогите додумать код. Должен получиться аудиочат. Если калашников не получится ... Суть задачи - на сайте форма. Пока можно одно состояние. на ней рубильник - Вкл/выкл, поля идентификации (имя, что там еще), комната (поле список пиров, так я понимаю) и все, наверное. Должна позволять общение (пока 2 пользователям. Пока даже интересует общение только админа с гостем) . Проект в Флешбилдере 4, тип -флекс. ПС. Сам я не местный (С) Флеш и все, что с ним связано вижу 1й раз. Но на безнадежен. Читаю, туман помаленьку рассеивается. Сейчас - проект нормально компилируется, выгружается на хостинг, на хостинге показывается форма на сайте, выключатель включается, соединение с серверами видимо происходит, так как ошибки на появляются. ДАльше - фантазия иссякла. Помогите, кто чем может. Советами в смысле )) Вот код <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="262" height="186" minWidth="120" minHeight="100" maxWidth="215" maxHeight="138" backgroundColor="#B6A6A6" pageTitle="Аудио чат" viewSourceURL="srcview/index.html"> <fx:Script> <![CDATA[ //Здесь мы импортируем используемые библиотеки в нашем коде import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.FlexEvent; import mx.rpc.events.ResultEvent; //далее объявляем переменные и прочее private const STRATUS_ADDR:String = "rtmfp://p2p.rtmfp.net/"; private const DEVELOPER_KEY:String = "тут ключ разработчика от адоб,так как сервера пиринговые его"; public var netConnection:NetConnection = new NetConnection(); public var sendStream:NetStream; public var streamDict:Dictionary = new Dictionary(); public var myroom:String; public var username:String; public var idList :Array = new Array('000'); public var clearList:Array = new Array('000'); //далее пошли функции //функция инициализации нового соединения public function initAll():void{ //максимальное количество одновременно подключеных пользователей netConnection.maxPeerConnections = 5; netConnection.addEventListener(NetStatusEvent.NET_STATUS,netHandler); netConnection.connect(STRATUS_ADDR+DEVELOPER_KEY); //отправляем свой идентификатор в p2p сети, //для того чтобы другие пользователи смогли к нам подклюбчиться peerService.send({peer: netConnection.nearID}); //очищаем список с пользователями с которыми мы устанавливали соединения //это нужно для переподключения к сети idList = clearList; } //функция обработки ответа на установку соединения с сервером adobe для нашей идентевикации в p2p сети private function netHandler(event: NetStatusEvent):void{ for (var key:* in event.info) switch (event.info.code){ case "NetConnection.Connect.Success": initSendStream(); break; case "NetConnection.Connect.Failed": Alert.show('Не получается подключиться в Adobe.Stratus.\n' + 'Скорее всего проблема связана с настройками файервола', 'Проблема с подключением'); break; case "NetStream.Connect.Closed": if (streamDict[event.info.stream] != undefined) delete streamDict[event.info.stream]; break; } } //если все ок в подключении, продолжаем отсюда //здесь мы инициализируем микрофон и начинаем свою трансляцию в сеть public function initSendStream():void{ sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS); sendStream.attachAudio(Microphone.getMicrophone()); sendStream.publish('media'); var client: Object = new Object(); client.onPeerConnect = function(callerNS:NetStream):Boolean { callerNS.send('hello', netConnection.nearID ,username); var cl2:Object = new Object(); cl2.imnew = function(senderID: String):void{ connectTo(senderID); }; callerNS.client = cl2; return true; }; sendStream.client = client; } //эта функция подключает нас к потоку нашего собеседника public function connectTo(peerID:String):Boolean{ //Здесь пришлось написать функцию для того чтобы запоминать всех с кем мы уже устанавливали соединение //иначе мы будем снова и снова подключаться к одним и темже for (var i:String in idList ){ if ((idList[i]) == peerID) { return false; } }; initRecieveStream(peerID); idList.push(peerID); return true; } //здесь мы начинаем у себя воспроизводить поток нашего собеседника public function initRecieveStream(peerID:String):void{ var rec:NetStream = new NetStream(netConnection, peerID); rec.addEventListener(NetStatusEvent.NET_STATUS, function(event:NetStatusEvent):void{}); rec.play('media'); } //эта функция отвечает за результат выполненного запроса на наш сервер //здесь мы узнаем в какой комнате мы находимся и кто со мной рядом //также здесь я получаю свое имя в сети protected function peerService_resultHandler(event:ResultEvent):void { myroom = event.result.room; username = event.result.username; for each(var peer:XML in event.result.peer){ connectTo(peer.text()); } } //функция действия по передвижению ползуна на рабочей области (вкл/выкл) protected function hslider1_changeHandler(event:Event):void { if(onoff.value == 0) { //здесь мы закрываем соединение netConnection.close(); sendStream.close(); }else{ //а здесь наоборот начинаем коннектится))) initAll(); } } ]]> </fx:Script> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here flash-p2p.appspot.com--> <s:HTTPService id="peerService" url="некоторый адрес с которого мы получаем данные о комнате, и кто в ней находится" resultFormat="e4x" result="peerService_resultHandler(event)" showBusyCursor="true"/> </fx:Declarations> <s:controlBarContent/> <s:HSlider id="onoff" x="25" y="23" width="100" height="22" change="hslider1_changeHandler(event)" liveDragging="true" maximum="1" minimum="0" stepSize="1" value="0"/> <s:Label x="25" y="10" fontFamily="Georgia" fontSize="12" fontStyle="normal" fontWeight="normal" lineThrough="false" text="Выкл" textDecoration="none"/> <s:Label x="102" y="10" fontFamily="Georgia" text="Вкл"/> </s:Application> Последний раз редактировалось raykom2010; 08.11.2013 в 11:57. |
|
|||||
|
Цитата:
|
|
|||||
|
Регистрация: Nov 2013
Сообщений: 5
|
ТЕму можно закрыть. С подключением разобрался.
Проблема была не в синтаксисе строки, а в дислокации файла и определении путей к нему. Относительные, абсолютные и проч ... Я поначалу в проекте Флекс вообще прикурил с путями ... Их там мульен. ОСобенно, когда паяешь на денвере, а заливать потом на хостинг. Да. Теперь другие проблемы. |
|
|||||
|
Регистрация: Nov 2013
Сообщений: 5
|
Цитата:
ПОдскажите, пожалуйста. Добавлено через 1 минуту Цитата:
Добавлено через 10 минут Поставил ))) Ошибки появились )) Вот первая. ArgumentError: Error #2126: NetConnection object must be connected. at flash.net::NetConnection/get nearID() at audiochat/initAll() at audiochat/hslider1_changeHandler() at audiochat/__onoff_change() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.core::UIComponent/dispatchEvent() at spark.components.supportClasses::SliderBase/animationEndHandler() at AnimationTarget/animationEnd() at spark.effects.animation::Animation/sendAnimationEvent() at spark.effects.animation::Animation/end() at spark.effects.animation::Animation/doInterval() at spark.effects.animation::Animation$/timerHandler() at flash.utils::Timer/_timerDispatch() at flash.utils::Timer/tick() Добавлено через 19 минут Вот тут УРЛ в ДЕкларации объявленный надо записать, а я не пойму какой. Наверно этот адрес не находится ... флешкой Добавлено через 30 часов 37 минут После 2го дня чтения мантр приходит некое просветление. Ошибка Очевидно говорит о том, что для объекта "NetConnection" или не открыто соединение или не хватает параметров от объекта "Нетсервис" отсюда ошибка в первом шаге, получения соединений с соседскими пирами а сведения о соседских пирах надо откудато взять. Походу вот эта сторока у мнея лажовая Объект <s:HTTPService id="peerService" url="некоторый адрес с которого мы получаем данные о комнате, и кто в ней находится" resultFormat="e4x" result="peerService_resultHandler(event)" showBusyCursor="true"/> Вот кто то может подсказать синтаксис этой строки и файл создается методом или уже там должен быть ? ? Бамагити ато голова дымится ... Последний раз редактировалось raykom2010; 09.11.2013 в 18:31. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:32. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|