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

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

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

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

Как, используя tilelist сделать компоненты dataprovider отдельными боксами, я так полагаю стоит использовать itemrenderer но в каком ключе не знаю. Заранее спасибо!


Код:
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2010/10/20/creating-complex-data-provider-objects-in-mxml-using-flex-4/ -->
<s:Application name="MX_DataGrid_dataProvider_Object_test"
			   xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   creationComplete="init();">
	
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.controls.List;
			[Bindable]
			public var arr:Array = ['sam', 'george', 'harris']
				//{label:"David", id:"11/19/1995"}, {label:"Collen", id:"4/20/1993"}, {label:"Sharon", id:"9/06/1997"}, {label:"Ronnie", id:"7/6/1993"}, {label:"James", id:"2/15/1994"}, 
			
			
			protected function init():void {
				
				//for(i=0; i < arr.length; i++) { 
				
		
			
				
			}
		]]>
	</fx:Script>
	<mx:TileList x="145" y="28" width="505" height="294" id="dg" dataProvider="{arr}">
			<mx:itemRenderer>
				<fx:Component>
					<mx:HBox width="150" height="50">
						<mx:Image height="47" width="50" source="http://cs10864.vkontakte.ru/g22570536/c_157848f1.jpg" ></mx:Image> 
					<mx:Label text="{data}"/>
					</mx:HBox>
				</fx:Component>
			</mx:itemRenderer>
	</mx:TileList>
	
	
</s:Application>

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Ничего не понятно.
По простому DataProvider это массив данных, а ItemRenderer - это визуализация этих данных.
Удобнее делать ItemRenderer в виде отдельного класса. Да и List использовать вместо TileList.

Код AS3:
<s:List x="145" y="28" width="505" height="294" id="dg" dataProvider="{arr}"  itemRenderer="components.myItemRenderer"/>
И файл myItemRenderer.mxml

Код AS3:
<?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">
	<mx:HBox width="150" height="50">
						<mx:Image height="47" width="50" source="{data.source}" ></mx:Image> 
					<mx:Label text="{data.label}"/>
					</mx:HBox>
</s:ItemRenderer>

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

Регистрация: Aug 2010
Адрес: Саратов
Сообщений: 185
Цитата:
Сообщение от Astraport Посмотреть сообщение
Ничего не понятно.
По простому DataProvider это массив данных, а ItemRenderer - это визуализация этих данных.
Удобнее делать ItemRenderer в виде отдельного класса. Да и List использовать вместо TileList.

Код AS3:
<s:List x="145" y="28" width="505" height="294" id="dg" dataProvider="{arr}"  itemRenderer="components.myItemRenderer"/>
И файл myItemRenderer.mxml

Код AS3:
<?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">
	<mx:HBox width="150" height="50">
						<mx:Image height="47" width="50" source="{data.source}" ></mx:Image> 
					<mx:Label text="{data.label}"/>
					</mx:HBox>
</s:ItemRenderer>
Попробую объяснить... Мне нужно реализовать окно в котором будут объекты - фотографии, имена и фамилии пользователей, источник данных - массив, до этого делал путем цикличного добавления объектов hbox с image и label в контейнер, но когда дело дошло до создания поиска по первому символу, мне посоветовали делать через dataprovider. В первом случае, мои объекты были отделены друг от друга имели эффекты, сейчас ломаю голову, как это можно реализовать таким методом. Что датапровайдер этот массив данных я прекрасно понимаю, проблема в том, как реализовать, описанную мною выше, визуализацию через itemrenderer, может быть подойдет что то другое, но я об этом просто не знаю

Добавлено через 10 минут
Попробовал вашим способом... появляющаяся полоса загрузки, заполняется на 3/4 и тишина...

Старый 14.10.2011, 00:51
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 4  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Цитата:
Попробую объяснить... Мне нужно реализовать окно в котором будут объекты - фотографии, имена и фамилии пользователей, источник данных - массив, до этого делал путем цикличного добавления объектов hbox с image и label в контейнер
Я привел пример, который это реализует.
Только некрасиво будет видимо. Если выводить картинку, а под ней Label, то лучше использовать VBox.
Вместо массива лучше использовать ArrayCollection примерно такого формата:

Код AS3:
public var arr:ArrayCollection = ([{label:"David", source:"87874.jpg"}, {label:"xcvxcv", source:"67567.jpg"}]);

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

Регистрация: Aug 2010
Адрес: Саратов
Сообщений: 185
Цитата:
Сообщение от Astraport Посмотреть сообщение
Я привел пример, который это реализует.
Только некрасиво будет видимо. Если выводить картинку, а под ней Label, то лучше использовать VBox.
Вместо массива лучше использовать ArrayCollection примерно такого формата:

Код AS3:
public var arr:ArrayCollection = ([{label:"David", source:"87874.jpg"}, {label:"xcvxcv", source:"67567.jpg"}]);
Проблема в том, что при добавлении mxml файла как "средство визуализации элементов", как я писал выше, просто не грузит приложение, без всяких ошибок, у меня fb4...

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Ну так ищите ошибку - это работает.
Можно и без этого "средство визуализации элементов" обойтись просто создав MXML компонент VGroup например и назначив его итемрендером.

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

Регистрация: Aug 2010
Адрес: Саратов
Сообщений: 185
Цитата:
Сообщение от Astraport Посмотреть сообщение
Ну так ищите ошибку - это работает.
Можно и без этого "средство визуализации элементов" обойтись просто создав MXML компонент VGroup например и назначив его итемрендером.
Ошибки в пустом проекте (специально создал для теста)?

Вот оба файла, может fb глючит... хотя больше склоняюсь к своим кривым рукам)
test.mxml
Код:
 <?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" minWidth="955" minHeight="600">
	<fx:Script>
		<![CDATA[
			[Bindable]
			
			public var arr:Array = [
				{label:"David", sn:"harisson"}, 
				{label:"Collen", sn:"johnson"}, 
				{label:"Sharon", sn:"marshal"}, 
				{label:"Ronnie", sn:"cartman"}]
				
		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- Разместить невизуальные элементы (например, службы или объекты значений) -->
	</fx:Declarations>
	<s:List x="145" y="28" width="505" height="294" id="dg" dataProvider="{arr}"  itemRenderer="components.itr"/>
	
</s:Application>
components/itr.mxml

Код:
<?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" width="400" height="300">
	<mx:HBox width="150" height="50">
		<mx:Image height="47" width="50" source="http://cs10864.vkontakte.ru/g22570536/c_157848f1.jpg" ></mx:Image> 
		<mx:Label text="{data.label}"/>
	</mx:HBox>
</s:ItemRenderer>

Старый 14.10.2011, 10:34
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 8  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Я же писал, что нужно использовать ArrayCollection
Код AS3:
public var arr:ArrayCollection = new ArrayCollection([{label:"David", sn:"harisson"}, {label:"Collen", sn:"johnson"}, {label:"Sharon", sn:"marshal"}, {label:"Ronnie", sn:"cartman"}]);
И вообще, как можно тестировать приложение без debug плеера?

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

Регистрация: Aug 2010
Адрес: Саратов
Сообщений: 185
Цитата:
Сообщение от Astraport Посмотреть сообщение
Я же писал, что нужно использовать ArrayCollection
Код AS3:
public var arr:ArrayCollection = new ArrayCollection([{label:"David", sn:"harisson"}, {label:"Collen", sn:"johnson"}, {label:"Sharon", sn:"marshal"}, {label:"Ronnie", sn:"cartman"}]);
И вообще, как можно тестировать приложение без debug плеера?
Запустил ваш пример, тоже самое, что и мой только в list, а мне нужно, чтобы было расстояние между боксами

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
ну так пишите gap="ваше_расстояние", какие проблемы? Вы ранее не писали про проблемы с расстояниями.
Ранее у вас были другие болезни.

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

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

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


 


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


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