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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.12.2011, 22:47
sstotenkopf вне форума Посмотреть профиль Отправить личное сообщение для sstotenkopf Найти все сообщения от sstotenkopf
  № 1  
Ответить с цитированием
sstotenkopf
 
Аватар для sstotenkopf

Регистрация: Aug 2010
Адрес: Саратов
Сообщений: 185
По умолчанию ItemRenderer и броуновское движение...

Добрый вечер... Вообщем встала задача сделать видеочат, я решил реализовать это через datagroup и itemrenderer... ArrayCollection имеет вид {name:имя пользователя, rating:его рейтинг, stream:экземпляр потока})
Скармливаю эти данные itemrenderer таким образом:

Код:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
				xmlns:s="library://ns.adobe.com/flex/spark" 
				xmlns:mx="library://ns.adobe.com/flex/mx" 
				autoDrawBackground="true">
		
	<s:BorderContainer id="bc" width="200" height="180" backgroundColor="#DEDEDE"
					   dropShadowVisible="true" borderVisible="false">
		<mx:UIComponent id="uic" width="200" height="164">
			<mx:creationComplete>
				<![CDATA[
				var video:Video = new Video;
				video.width = uic.width;
				video.height = uic.height;
				uic.addChild(video);
				if(data.stream == 0){
				var c:Camera = Camera.getCamera();
				c.setMode(320,240,30);
				video.attachCamera(c);	
				}else{
				var stream:NetStream = data.stream as NetStream;
				video.attachNetStream(stream);
				}
				]]>
			</mx:creationComplete>
		</mx:UIComponent>
		<s:HGroup x="10" y="167" width="44" height="11" verticalAlign="middle">
			<s:Image width="14" height="13" smooth="true" smoothingQuality="high" source="img/user.png"/>
			<s:Label color="#005281" depth="1" fontWeight="bold" text="{data.name}"/>
		</s:HGroup>
		<s:HGroup x="144" y="167" width="44" height="11" verticalAlign="middle">
			<s:Image width="14" height="15" source="img/топ юзеров.PNG"/>
			<s:Label color="#C1761E" depth="2" fontWeight="bold"
					 text="{data.rating}" textAlign="right"/>
		</s:HGroup>
	</s:BorderContainer>
</s:ItemRenderer>
Естественно объект data.stream не имеет привязки, в результате чего, со временем перестает совпадать с именем, рейтингом, меняет местоположение, вообщем ведет себя достаточно хаотично, в результате возникает вопрос, как можно использовать здесь привязку, если объект video не имеет аналогов в mxml формате?

Добавлено через 2 часа 4 минуты
нашел такой выход:
Код:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
				xmlns:s="library://ns.adobe.com/flex/spark" 
				xmlns:mx="library://ns.adobe.com/flex/mx" 
				autoDrawBackground="true">
		
	<fx:Script>
		<![CDATA[
			[Bindable]
			public var stream:NetStream;
		]]>
	</fx:Script>
	<fx:Binding source="{data.stream}" destination="stream"/>
	<s:BorderContainer id="bc" width="200" height="180" backgroundColor="#DEDEDE"
					   dropShadowVisible="true" borderVisible="false">
		<mx:UIComponent id="uic" width="200" height="164">
			<mx:creationComplete>
				<![CDATA[
				var video:Video = new Video;
				video.width = uic.width;
				video.height = uic.height;
				uic.addChild(video);
				if(stream == null){
				var c:Camera = Camera.getCamera();
				c.setMode(320,240,30);
				video.attachCamera(c);	
				}else{
				video.attachNetStream(stream);
				}
				]]>
			</mx:creationComplete>
		</mx:UIComponent>
		<s:HGroup x="10" y="167" width="44" height="11" verticalAlign="middle">
			<s:Image width="14" height="13" smooth="true" smoothingQuality="high" source="img/user.png"/>
			<s:Label color="#005281" depth="1" fontWeight="bold" text="{data.name}"/>
		</s:HGroup>
		<s:HGroup x="144" y="167" width="44" height="11" verticalAlign="middle">
			<s:Image width="14" height="15" source="img/топ юзеров.PNG"/>
			<s:Label color="#C1761E" depth="2" fontWeight="bold"
					 text="{data.rating}" textAlign="right"/>
		</s:HGroup>
	</s:BorderContainer>
</s:ItemRenderer>
не уверен, что не криво

Старый 24.12.2011, 00:52
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А если пользователь не разрешил на постоянно камерой пользоваться? Он жеж в приступе агрессии может и бензопилой
А вообще, у контролов основанных на List есть вомзможность контролировать создание через свою функцию. itemRendererFunction называется. Эта функция должна создавать или может возвращать закешированый ранее рендерер. Еще вариант - создать пул объектов видео и когда у итем-рендерера случается addedToStage, например, выдавать ему из пула, в зависимости от данных в рендерере.
__________________
Hell is the possibility of sanity

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

Регистрация: Aug 2010
Адрес: Саратов
Сообщений: 185
Вообщем все равно мой пример глючит, после того как в работающий чат заходят новые пользователи. Почитал про itemRendererFunction нифига не понял, можно пример если не трудно, либо любого другого варианта?

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

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

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


 


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


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