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

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

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

Регистрация: Feb 2011
Сообщений: 42
По умолчанию Засунуть BitmapImage в UIComponent

Привет. Я новичок во флеше, помогите распутаться в классах flex
Задача такая - есть BorderContainer, в котором нужно отображать интерактивные изображения.
Изображения хочу отображать классом BitmapImage. Но чтобы они при этом были интерактивны, нужно этот BitmapImage положить в объект ещё какого-то класса, по логике, Sprite.

Вот здесь возникает проблема с совместимостью классов. Чтобы объекты можно было отображать в основном BorderContainer, нужно, чтобы они реализовывали интерфейс IVisualElement. Sprite его не реализовывает, но реализовывает его потомок - UIComponent (http://help.adobe.com/ru_RU/AS3LCR/F...Component.html). Поэтому, я решил использовать его. Итак, что хочу иметь:
Один корневой BorderContainer для всего => в нём несколько объектов UIComponent => в каждом из них по картинке BitmapImage.

И вот тут главная проблема - в UIComponent можно класть только объекты DisplayObject, коим BitmapImage не является. Но! Я нашел в этом классе свойство displayObject (http://help.adobe.com/ru_RU/AS3LCR/F...tmapImage.html)
Цитата:
displayObject : DisplayObject
[только для чтения] Совместно используемый DisplayObject, в котором отображается этот IGraphicElement.
То есть, BitmapImage всё же имеет отношение к displayObject. Но как это работает?
Такой код:
Код AS3:
displayedImage.createDisplayObject();
uiComponent.addChild(displayedImage.displayObject);
работает без ошибок, но добавляет в UIComponent пустой объект, отображается пустота.
Не нашел про это ничего в интернете.

Возможно, я вообще делаю не то, и надо использовать другие классы) Тогда поставьте на путь истинный)
BitmapImage хочу использовать потому, что класс очень удобен при работе с изображениями и вроде бы легковесен. Вообще хотелось бы использовать новые классы flex по возможности.
Спасибо.


Последний раз редактировалось Sharkow; 24.02.2011 в 02:33.
Старый 24.02.2011, 03:52
Flashrunner вне форума Посмотреть профиль Отправить личное сообщение для Flashrunner Найти все сообщения от Flashrunner
  № 2  
Ответить с цитированием
Flashrunner

Регистрация: Sep 2010
Сообщений: 47
BitmapImage больше предназначен для программного рисования битмапой. Вот пример его добавления в дисплей лист.
Если же вы будете использовать уже готовые изображения, то имеет смысл использовать Image. Для него не понадобится оберток.

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

Регистрация: Feb 2011
Сообщений: 42
После прочтения этого и этого понял, что BitmapImage с интерактивностью лучше не связывать... жаль, тогда придётся загружать изображения другим классом, а для интерактивности использовать SpriteVisualElement. Буду разбираться.

Добавлено через 13 минут
Цитата:
Сообщение от Flashrunner Посмотреть сообщение
BitmapImage больше предназначен для программного рисования битмапой. Вот пример его добавления в дисплей лист.
Если же вы будете использовать уже готовые изображения, то имеет смысл использовать Image. Для него не понадобится оберток.
Точно, спасибо. Не знаю, почему сразу не читал про Image.
Только вот странно, что написано в документации к Image:
Цитата:
Например, невозможно загрузить изображения с классом BitmapImage во время выполнения.
А у меня это делать получалось. Может быть, в новой версии SDK поменяли.

Всё, вопросов нет. Спасибо, Flashrunner


Последний раз редактировалось Sharkow; 24.02.2011 в 04:32.
Старый 24.02.2011, 04:34
Flashrunner вне форума Посмотреть профиль Отправить личное сообщение для Flashrunner Найти все сообщения от Flashrunner
  № 4  
Ответить с цитированием
Flashrunner

Регистрация: Sep 2010
Сообщений: 47
Цитата:
Сообщение от Sharkow Посмотреть сообщение
Блин, секундочку. Есть mx:Image, а есть spark:image. И они сильно отличаются. А какой класс Вы имели в виду?)
mx'совский. О существовании спарковского узнал от вас. Он еще в бэте.
Цитата:
Сообщение от Sharkow Посмотреть сообщение
А у меня это делать получалось. Может быть, в новой версии SDK поменяли.
Не экспериментировал с этим, вообщем-то не для этого он предназначен.
Цитата:
Сообщение от Sharkow Посмотреть сообщение
С Image остались вопросы только с качеством отрисовки, там всё не настолько продвинуто, как в BitmapImage.
Опять же, у них разные задачи. Что вас не устраивает в качестве отрисовки Image?

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

Регистрация: Feb 2011
Сообщений: 42
А я стал использовать спарковский Он практически то же самое, что BitmapImage, плюс интерактивность.
Пусть в бэте, приемлемо)
Вот в нём как раз всё нормально.

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

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
Цитата:
Сообщение от Flashrunner Посмотреть сообщение
BitmapImage больше предназначен для программного рисования битмапой.
Ну, он замечательно подходит и для скинования. В MXML-файле скина, скажем, кнопки, его можно использовать в качестве фона:
Код AS3:
	<s:BitmapImage
		source="@Embed('assets/images/button_up.png', scaleGridLeft='4', scaleGridTop='4', scaleGridRight='8', scaleGridBottom='8')"
		source.over="@Embed('assets/images/button_over.png', scaleGridLeft='4', scaleGridTop='4', scaleGridRight='8', scaleGridBottom='8')"
		source.down="@Embed('assets/images/button_down.png', scaleGridLeft='4', scaleGridTop='4', scaleGridRight='8', scaleGridBottom='8')"		
		top="0"
		right="0"
		bottom="0"
		left="0"
	/>
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

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

Регистрация: Feb 2011
Сообщений: 42
Спасибо за инфо.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Он практически то же самое, что BitmapImage, плюс интерактивность.
Не путайте теплое с мягким. BitmapImage вообще не отображаемый объект. Загружать внешние изображения он научился только с версии 4.5.

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

Регистрация: Feb 2011
Сообщений: 42
Как это не отображаемый, когда я спокойно пихал его прямо на сцену и всё работало?
Это на версии 4.5, да.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Как это не отображаемый
Да вот так. Он не наследуется от DisplayObject.
Цитата:
когда я спокойно пихал его прямо на сцену и всё работало?
Вы его пихали не на сцену, а в spark контейнер, который знает, что если ему добавили наследника GraphicElement, то его надо отрисовать.
Цитата:
Это на версии 4.5, да.
И да, во всех версиях ветки 4.x BitmapImage -> GraphicElement -> EventDispatcher -> Object.

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

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

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


 


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


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