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

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

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

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
По умолчанию BitmapImage не рассылает события

Здравствуйте
В AS ItemRenderer-е добавляю в качестве child BitmapImage.
Добавляю слушателей к нему тут же в createChildren

В переопределенном методе set data устанавливаю что загружать, но ничего не загружается, и не рассылаются события элеменотом.
Где я ошибся ?
Код AS3:
package swiz.views.components.itemRenderers
{
	import flash.display.Bitmap;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.HTTPStatusEvent;
	import flash.events.IOErrorEvent;
	import flash.filters.DropShadowFilter;
 
	import mx.core.UIComponent;
	import mx.core.mx_internal;
 
	import spark.components.Group;
	import spark.components.LabelItemRenderer;
	import spark.components.VGroup;
	import spark.components.supportClasses.StyleableTextField;
	import spark.primitives.BitmapImage;
 
	import swiz.model.AppSettings;
 
	public class ExcurtionIR extends LabelItemRenderer
	{
		protected var background:Sprite;
		protected var bitmapBackground:Sprite;
		protected var bitmap:BitmapImage;
		protected var nameLabelDisplay:StyleableTextField;
 
		public function ExcurtionIR()
		{
			super();
		}
 
		override public function set data(value:Object):void
		{
			super.data = value;	
 
			if(data)
			{
				if(nameLabelDisplay)
				{
					nameLabelDisplay.text = data.label;	
				}
				if(bitmap)
				{
					trace("loading icon="+data.icon);
					bitmap.source = data.icon;
				}
			}
		} 
 
		protected function bitmapLoadCompleteHandler(event:Event):void
		{
			trace("icon loaded");
		}
 
		protected function bitmapErrorHandler(event:IOErrorEvent):void
		{
			trace("ERROR : "+event.text);
		}
 
		protected function bitmapHttpStatusHandler(event:HTTPStatusEvent):void
		{
			trace("http status "+event.status);
		}
 
		override protected function createChildren():void
		{
			trace("create children");
			background = new Sprite();
			addChild(background);
 
			background.filters = [new DropShadowFilter(2,2,45,.3)];
 
			bitmapBackground = new Sprite();
			addChild(bitmapBackground);
			bitmapBackground.graphics.beginFill(0x000000);
 
			bitmapBackground.graphics.drawRect(0,0,AppSettings.excurtionIRHeight,AppSettings.excurtionIRHeight);
			bitmapBackground.graphics.endFill();
 
			bitmap = new BitmapImage();
			bitmap.scaleMode = "letterbox";
			var biContainer:Group = new Group();
			biContainer.addElement(bitmap);
			bitmapBackground.addChild(biContainer);
 
			bitmap.addEventListener(IOErrorEvent.IO_ERROR,bitmapErrorHandler);
			bitmap.addEventListener(Event.COMPLETE,bitmapLoadCompleteHandler);
			bitmap.addEventListener(HTTPStatusEvent.HTTP_STATUS,bitmapHttpStatusHandler);
 
			super.createChildren();
 
			labelDisplay.multiline = true;
			labelDisplay.wordWrap = true;
 
			labelDisplay.setStyle("color",0x529257);
			labelDisplay.setStyle("fontSize",AppSettings.excurtionIRNameFontSize);
			labelDisplay.setStyle("textAlign","center");
 
			invalidateProperties();
			invalidateSize();
			invalidateDisplayList();
		}
 
		override protected function measure():void
		{
			super.measure();
			measuredHeight = bitmapBackground.height + AppSettings.excurtionIRPaddingTop*2;    		
		}
 
		override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
		{    
			background.graphics.beginFill(0xffffff);
			background.graphics.drawRect(0,0, unscaledWidth - AppSettings.excurtionIRPaddingTop*2,AppSettings.excurtionIRHeight+AppSettings.excurtionIRPaddingTop);
			background.graphics.endFill();
		}
 
		override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
		{
			super.layoutContents(unscaledWidth, unscaledHeight);
			// layout all the subcomponents here      	
			//bitmapBackground.x = AppSettings.excurtionIRPaddingTop * 1.5;
			//bitmapBackground.y = AppSettings.excurtionIRPaddingTop/2;
 
			setElementSize(bitmap,AppSettings.excurtionIRHeight,AppSettings.excurtionIRHeight);
			setElementSize(labelDisplay,unscaledWidth - (AppSettings.excurtionIRHeight + AppSettings.excurtionIRPaddingTop*14), unscaledHeight);
			setElementPosition(labelDisplay,AppSettings.excurtionIRHeight+AppSettings.excurtionIRPaddingTop*2 ,AppSettings.excurtionIRPaddingTop * 3);
		}
 
	}
}

Старый 07.09.2014, 01:15
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 2  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
Загрузите через Loader.

Кстати никаких событий этот класс не рассылает судя по доке.
http://help.adobe.com/ru_RU/FlashPla...l#eventSummary

Старый 07.09.2014, 01:57
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 3  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Цитата:
Сообщение от ShockWave512 Посмотреть сообщение
Загрузите через Loader.

Кстати никаких событий этот класс не рассылает судя по доке.
http://help.adobe.com/ru_RU/FlashPla...l#eventSummary
рассылает, рассылает
Код гляньте этого BitmapImage

Вопрос с событиями решен, я вложил BitmapImage в spark.primitives.Graphics и все заработало (картинка загружается, срабатывает событие COMPLETE), но не отображается картинка

Код AS3:
override protected function createChildren():void
{
...................................................
bitmap = new BitmapImage();
bitmap.scaleMode = "letterbox";
var biGraphics:Graphic = new Graphic();
biGraphics.addElement(bitmap);
addChild(biGraphics);
}

Старый 07.09.2014, 02:06
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 4  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
ааа, апаш! ясно!

кстати зачем все эти сложности с BitmapImage? Ведь вы используете LabelItemRenderer, он как бы не предназначен для работы со spark компонентами как контейнер. Загрузите лоадером и шлепните простой Bitmap.

Кстати может по этому и не отображается после загрузки, нет нормальной обвязки для жизненного цикла.

Старый 07.09.2014, 02:22
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 5  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Почему он не предназначен для работы со спарк компонентами ?

Код AS3:
public class LabelItemRenderer extends UIComponent
    implements IDataRenderer, IItemRenderer
{
}
Дело не в том от чего унаследован рендерер, я думаю

Старый 07.09.2014, 02:29
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 6  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
Ну так это не спарк контейнер, его нужно наследовать от например Group
http://help.adobe.com/en_US/FlashPla...ropertySummary

просто addChild() тут не поможет, спарк компонент нужно добавлять через addElement()

Старый 07.09.2014, 14:06
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 7  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
да, действительно, упустил это из вида, спасибо.

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

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

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


 


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


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