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

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

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

Регистрация: Jul 2007
Сообщений: 44
По умолчанию custom itemRenderer

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

Код:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:bench="components.benchmark.*">
	<mx:Script>
		<![CDATA[
			private function sampleXML():XML
			{
				var xml:XML = 
					<bench name="top 10">
						<company name="Sibers" tend="up"/>
						<company name="Adobe" tend="up"/>
					</bench>
			}
		]]>
	</mx:Script>
	<bench:BenchmarkRanking sourceFile="{sampleXML()}"/>
</mx:Application>
Вот компонента BenchmarkRanking

Код:
<mx:Panel>
	<mx:DataGrid id="dataGrid" dataProvider="{tends}">
		<mx:columns>
			<mx:DataGridColumn dataField="company"/>
			<mx:DataGridColumn itemRenderer="BenchRenderer"/>
		</mx:columns>
	</mx:DataGrid>
	<mx:Script>
		<![CDATA[
			private var tends:Array = null;
			
			public function set sourceFile(obj:XML):void
			{
				// забиваю массив tends начинкой из XML
			}
		]]>
	</mx:Script>
</mx:Panel>
И сам кастомный рендерер:

Код:
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="addSymbol(event)">
	<mx:Script>
		<![CDATA[
			[Embed('/swf/tend.swf', symbol='UpArrow_design')]
			private static var UpArrow:Class;

			[Embed('swf/tend.swf',symbol='DownArrow_design')]
			private static var DownArrow:Class;

			private function addSymbol(event:FlexEvent):void
			{
				var sprite:Sprite = null;
				if( data.tend=="up" )
					sprite = new UpArrow() as Sprite;
				else if( data.tend=="down" )
					sprite = new DownArrow() as Sprite;
				wrapper.addChild(sprite);
			}
		]]>
	</mx:Script>
	<mx:UIComponent id="wrapper"/>
</mx:Canvas>
Всё бы ничего, но вот когда я сортирую датагрид тыцканьем по дататипсам с моим рендерингом происходит нечто странное. Вапще как бы там должны быть стреоски, две, зелёная и красная... Но порой они обе красные, или обе зелёные...

Вот аутпут
http://ccfit.nsu.ru/~stulov/BenchmarkingRanking.swf

Потыкайте сортировку и понаблюдайте за стрелосками. Они скачу совсем не соответственно остальным айтемам в столбце...

Может я чё делаю неверно? Или не понял механизма кастомного рендеринга... Может кто нибудь подсказать выход?

Выложенный код немного упрощён но смысл тот же
__________________
hell no !

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

Регистрация: Jul 2007
Сообщений: 44
Уже разобрался. Сделал вот так:
Код:
	public class BenchmarkTendRenderer extends VBox
	{
		public function BenchmarkTendRenderer()
		{
			super();
		}
		
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
		{
			// вот тут своя рисовалка
			super.updateDisplayList(unscaledWidth,unscaledHeight);
		} 
	}
__________________
hell no !

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

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

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


 


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


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