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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.11.2011, 00:28
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 1  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
По умолчанию Использовать динамическизагруженное изображение как embed

Здравствуйте форумчане.

Буду краток )))
Есть API для работы с графикой, и некий метод, который в качестве параметра принимает Class граф.изображения, которое предварительно встроено с использованием embed.
В самом методе вот что делается с этим классом:

Код AS3:
[Embed(source = "flower.png")] protected var UserImage:Class;
 
...
loadGraphic(UserImage);
...
 
//а это в API
public function loadGraphic(Graphic:Class)
{
...
   var localBitmapData:BitmapData = (new Graphic).bitmapData;
}
Собственно, есть необходимость менять изображения не пересобирая флэшку, а просто перезаписывая файлы с картинками в папке. Т.е. мне надо передать Class-изображение в конструктор при этом вытащенный из какого-нить Loader, URLLoader или что-то подобное.
Всякие фокусы с loadbytes и последующим (bytesloader.data as Class) или (Loader.content) ессно не работают и выплёвывают ошибку: Error #1007: Попытка реализации в объекте, который не является конструктором.

Помогите )

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

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Если Вы можете изменить метод loadGraphic, то что то типа этого должно работать:
Код AS3:
public function loadGraphic(Graphic:Object)
{
...
   var localBitmapData:BitmapData = Graphic is Class ? ((new Graphic).bitmapData) : (Graphic as Bitmap).bitmapData;
}
loadGraphic(loader.content as Bitmap);
Нужно еще проверок добавить.

Добавлено через 6 минут
А если нет, то может сработает костыль типа этого:
Код AS3:
package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
 
	public class MyBitmap extends Bitmap
	{
		public static var bd: BitmapData;
		public function MyBitmap(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false)
		{
			super(bitmapData || bd, pixelSnapping, smoothing);
			bd = null;
		}
	}
}
MyBitmap.bd = (loader.content as Bitmap).bitmapData;
loadGraphic(MyBitmap);
Но это такой костыль.
Все таки лучше сделать два метода:
Код AS3:
public function loadGraphicClass(value: Class):void
{
      loadGraphic((new value() as Bitmap).bitmapData);
}
public function loadGraphic(bd:BitmapData):void
{
 
}
__________________
http://www.chessmax.ru

Старый 02.11.2011, 10:35
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 3  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
Спасибо, видимо придется дописывать свой loadGraphics чтобы принимал Bitmap. Но задача, по сути, получается неприступная... в каком же "виде" представлен Embed внутри плеера? )))

Старый 02.11.2011, 10:44
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 4  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Цитата:
в каком же "виде" представлен Embed внутри плеера? )))
Например наследник класса BitmapAsset.
Вы просто хотите в рантайм создать еще один класс, но этим занимается компилятор, а не флешка, конечно можно запариться, но стоит ли овчинка выделки?
__________________
http://www.chessmax.ru

Старый 02.11.2011, 11:47
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 5  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
Да-да, вот теперь я осознал свой "запар" )))

Спасибо за наводку, чтение про BitmapAsset http://help.adobe.com/ru_RU/FlashPla...tmapAsset.html действительно многое расставило на свои места.


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

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

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


 


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


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