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

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

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

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
По умолчанию Динамическая Embed Image

Здравствуйте!

Подскажите плиз, как заставить Embed работать динамически?

вставляю картинки в спрайт:

Код AS3:
[Embed(source='myinc/img/some_picture.png')] var ico2Class:Class;
var ico2:Bitmap = new ico2Class();
хочу чтоб они динамически определялись в зависимости от переменной "house". что-то вроде этого:

Код AS3:
[Embed(source='myinc/img/'+house+'.png')] var ico2Class:Class;
var ico2:Bitmap = new ico2Class();

Старый 02.12.2011, 09:26
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 2  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Цитата:
Подскажите плиз, как заставить Embed работать динамически?
С помощью ActionScript - никак. Только сторонним средствами, если очень нужно.

Старый 02.12.2011, 09:40
billion вне форума Посмотреть профиль Отправить личное сообщение для billion Посетить домашнюю страницу billion Найти все сообщения от billion
  № 3  
Ответить с цитированием
billion

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
хмм.... а что за сторонние средства?

тогда как с помощью АС3 это сделать?

почитал на форуме.... увидел примеры, но у меня не работает:

Код AS1/AS2:
 
		[Embed(source='myinc/img/some_picture.png')] public static var sp:Class;
		[Embed(source='myinc/img/another_picture.png')] public static var ap:Class;
 
public function getBitmap(str:String=''):Bitmap {
			var ico2:Bitmap;
			var cc:Class = getDefinitionByName(str) as Class;
			ico2 = new cc;
			return ico2;
		}
 
getBitmap("sp");
выдаёт ошибку
ReferenceError: Error #1065: Переменная sp не определена.

Добавлено через 13 минут
разобрался.

то что выдал
Код AS3:
var aa:String = getQualifiedClassName(new sp);
вставил в
Код AS3:
var cc:Class = getDefinitionByName(aa) as Class;


Последний раз редактировалось billion; 02.12.2011 в 09:42.
Старый 02.12.2011, 11:40
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 4  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
И в чем смысл подобных манипуляций?

PS
Сторонние средства - это генерация файлов по шаблону перед сборкой приложения. Embed - это мета-тэг компилятора, он к ActionScript особого отношения не имеет.
__________________
...вселенская грусть

Старый 02.12.2011, 11:41
smithy вне форума Посмотреть профиль Отправить личное сообщение для smithy Найти все сообщения от smithy
  № 5  
Ответить с цитированием
smithy

Регистрация: Oct 2011
Адрес: Питер
Сообщений: 58
@billion, это в любом случае не динамический Embed. Это метод для получения битмапы из текущего ApplicationDomain. При этом битмапа либо была заэмбедена вручную, либо загружена в текущий домен.

А чтобы динамически подгружать картинки в зависимости от переменной house, надо использовать Loader.

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

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
перешёл на лоадер.... теперь идёт динамическая подгрузка с диска.

но это не то что я хотел получить.
в своих начальных "махинациях" (см. топик) я хотел налету выбирать встроенную картинку в зависимости от переменной. и быстро и удобно. хоть их и будет около 500, но они все маленькие.
недостаток - при появлении 501 картинки, надо перекомпилить код.

я пытался сделать так чтобы новые картинки автоматически встраивались в приложение.

что у меня в коде происходит? при определённом событии из 500 картинок выбираются некоторые в зависимости от переменных и отображаются несколько копий каждой из них в спрайтах на сцене.
например взять хаусе1 и хаусе10 и отобразить 50 копий хаусе1 и 20 копий хаусе2. соответственно требуется чтобы это всё не моргало и отображалось быстро.

хотелось бы реализовать следующий механизм:
если нужная картинка встроена в приложение - отобразить её.
если нет то подгрузить с сервера, встроить в приложение и отобразить.

как-то можно это реализовать?

Старый 02.12.2011, 14:05
smithy вне форума Посмотреть профиль Отправить личное сообщение для smithy Найти все сообщения от smithy
  № 7  
Ответить с цитированием
smithy

Регистрация: Oct 2011
Адрес: Питер
Сообщений: 58
Вообще, 500 картинок, заэмбеденых во флешку - это не самый лучший подход.

Ну а если вы хотите проверять зашита ли картинка во флешку, то тут приходит в голову 2 варианта:
1. Некий ResourceManager, который знает какие картинки вшиты во флешку, какие уже загружены, а какие надо загрузить. Соответственно перед получением картинки проверять ее существование в менеджере.
2. В Вашем методе поставить getDefinitionByName в try..catch. Если картинка не найдена в домене приложения, метод выбросит исключение, и значит картинку надо загрузить.

Старый 02.12.2011, 14:07
billion вне форума Посмотреть профиль Отправить личное сообщение для billion Посетить домашнюю страницу billion Найти все сообщения от billion
  № 8  
Ответить с цитированием
billion

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
точно! блин.... заработался. пока ходил курить тоже пришёл к такому же решению. благодарю

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

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

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


 


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


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