Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.02.2012, 18:38
ashIndie вне форума Посмотреть профиль Отправить личное сообщение для ashIndie Найти все сообщения от ashIndie
  № 11  
Ответить с цитированием
ashIndie

Регистрация: Feb 2012
Сообщений: 68
ну а я пытаюсь щас сделать чтобы одно и то же приложение было и отправителем и слушателем....так нельзя?
farPeerID = callers.farID; для чего используется?

Старый 25.02.2012, 18:42
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 12  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Используйте библиотеку Tom'а Krcha.
И там же есть примеры.

Старый 25.02.2012, 18:44
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 13  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Цитата:
я пытаюсь щас сделать чтобы одно и то же приложение было и отправителем и слушателем....так нельзя?
Конечно можно, иначе смысла бы в этом не было. Для этого у вас должно существовать как-минимум два потока: один публикующий, другой принимающий. По ссылке, что я привел, все очень подробно разжеванно. Если скачаете исходник, то должно стать еще понятнее.
в краце:
создаете публикующий поток. В его клиенте должен быть определен тот самый метот onPeerConnect, из которого Вы создаете принимающий поток. Ему в конструктор передаете callers.farID, и тогда он начинает (по вызову метода .play(name)) "слушать" оппонента. Вот и все. Отправка идет через публикующий поток, приме - через принимающий.

Добавлено через 41 секунду
Цитата:
Используйте библиотеку Tom'а Krcha.
Она на нетгруппах. Тем более, человек хочет разобраться в механизме.

Старый 25.02.2012, 18:52
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 14  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Цитата:
Она на нетгруппах.
Если бы на использовала NetGroup, то я бы ней не пользовался, потому что из-за NetGroup P2P стает очень медленным (пинг от 1 секунды).
А у меня пинг меньше 0.2 секунд.

Старый 25.02.2012, 19:28
ashIndie вне форума Посмотреть профиль Отправить личное сообщение для ashIndie Найти все сообщения от ashIndie
  № 15  
Ответить с цитированием
ashIndie

Регистрация: Feb 2012
Сообщений: 68
каким образом мне тогда сделать обмен этими ID?
помогите ктонибудь, как мне исправить код чтобы все получилось?....я уже просто целый день сижу и запутался в примерах совсем.....дайте аську, скайп или помогите исправить код....чтобы я наглядно увидел как надо было сделать....примеров достаточно....но под конец дня я уже ничего не понимаю....
очень прошу...))) знающему человеку пару минут потратить, а мне еще день копать....

Старый 25.02.2012, 19:46
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 16  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Код выложи - посмотрим.

Старый 25.02.2012, 19:56
ashIndie вне форума Посмотреть профиль Отправить личное сообщение для ashIndie Найти все сообщения от ashIndie
  № 17  
Ответить с цитированием
ashIndie

Регистрация: Feb 2012
Сообщений: 68
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.net.NetConnection;
	import flash.events.NetStatusEvent;
	import flash.net.NetStream;
	import flash.media.Microphone;
	import flash.media.Camera;
	import fl.video.*;
	import flash.media.Video;
	import flash.net.NetGroup;
	import flash.net.GroupSpecifier;
 
 
	public class Main extends MovieClip {
 
		private const CIRRUS_ADDRESS:String = "rtmfp://p2p.rtmfp.net";
		private const DEVELOPER_KEY:String = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";			
		private var netConnection:NetConnection;
		private var myPeerID;
		private var farPeerID;
		//streams
		private var sendStream:NetStream;
		private var recvStream:NetStream;
		private var video:Video;
 
		public function Main() {			
			netConnection = new NetConnection();			
			// Добавляем детектор (listener) для получаения информации о статусе соединения			
			netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler);			
			// Соединяемся со Cirrus 			
			netConnection.connect(CIRRUS_ADDRESS, DEVELOPER_KEY);
		}
 
		function netConnectionHandler(e:NetStatusEvent):void {
			switch (e.info.code) {
				case "NetConnection.Connect.Success":
					trace(e.info.code);
					myPeerID = netConnection.nearID;
					initSendStream();
					break;
			}
		}
 
		// для отправки потока данных пиру
		private function initSendStream() {
			trace("initSendStream()");
			sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS);
			sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler);
			sendStream.publish("media");
			sendStream.attachAudio(Microphone.getMicrophone());
			sendStream.attachCamera(Camera.getCamera());
 
			var sendStreamClient:Object = new Object();
			sendStreamClient.onPeerConnect = function(callers:NetStream):Boolean {
				farPeerID = callers.farID;
				trace("onPeerConnect "+farPeerID);
				return true;
			}
			sendStream.client = sendStreamClient;
		}
 
		private function initRecvStream() {
			trace("initRecvStream()");
			trace("myPerrID = ", myPeerID);
			recvStream = new NetStream(netConnection, myPeerID);
			recvStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler);
			recvStream.play("media");
 
			video = new Video(320, 240);
			video.attachNetStream(recvStream);
			addChild(video);
 
			recvStream.client = this;
		}
 
		function netStreamHandler(e:NetStatusEvent):void {
			trace(e.info.code);
			if (e.info.code=="NetStream.Publish.Start") {
				initRecvStream();
			}
		}
 
	}
 
}

Старый 25.02.2012, 20:17
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 18  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Вызов метода initRecvStream должен быть тут sendStreamClient.onPeerConnect, и передавать ему в качестве параметра callers.farID. И вот тут recvStream = new NetStream(netConnection, farID); он и должен быть в конструкторе

Старый 25.02.2012, 22:21
ashIndie вне форума Посмотреть профиль Отправить личное сообщение для ashIndie Найти все сообщения от ashIndie
  № 19  
Ответить с цитированием
ashIndie

Регистрация: Feb 2012
Сообщений: 68
Цитата:
Вызов метода initRecvStream должен быть тут sendStreamClient.onPeerConnect, и передавать ему в качестве параметра callers.farID
не совсем понял...вот так?
Код AS3:
var sendStreamClient:Object = new Object();
			sendStreamClient.onPeerConnect = function(callers:NetStream):Boolean {
				farPeerID = callers.farID;
				trace("onPeerConnect "+farPeerID);
				initRecvStream(farPeerID);
				return true;
			}
			sendStream.client = sendStreamClient;
Цитата:
И вот тут recvStream = new NetStream(netConnection, farID); он и должен быть в конструкторе
как это написать в конструкторе, если нам еще не известен farID?

Старый 25.02.2012, 22:47
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 20  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
initRecvStream(farPeerID);
Вот farPeerID - это оно и есть.
А так, как Вы делали:
recvStream = new NetStream(netConnection, myPeerID);
Это Вы к себе же и подключались)

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
rtmfp

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.