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

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

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

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
По умолчанию Как правильно внедрить кучу иконок?

День добрый, собсна сабж, у меня есть 20+ иконок (а может быть и больше) и мне надо их внедрить во флекс прилождение. Писать 20+ раз:
Код AS3:
[Embed('DataFiles/icons/icon1.png')]
public var myIcon1:Class;
как то неочень хочется, есть ли более удобные способы добавить их?


Последний раз редактировалось nOobCrafter; 07.09.2009 в 15:18.
Старый 07.09.2009, 17:42
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А что именно смущает? Писать пути все равно прийдется так или иначе.
__________________
Hell is the possibility of sanity

Старый 07.09.2009, 18:32
gnus вне форума Посмотреть профиль Отправить личное сообщение для gnus Найти все сообщения от gnus
  № 3  
Ответить с цитированием
gnus

Регистрация: Feb 2008
Сообщений: 100
склейте их в одну "ленту" и загрузите, а когда надо "разрежьте" на отдельные куски

Код AS3:
[Embed(source="icons.png")] //<- лента квадратных одноразмерных картинок  
private var icons:Class;		
 
private var images:Array=new Array();// <-массив для картинок
 
private function loadIcons():void
{
  var asset:BitmapAsset=new icons();						
  var countIcons:int=asset.bitmapData.width/asset.bitmapData.height;
  var iconWidth:Number=asset.bitmapData.height;
  for(var i:int=0;i<countIcons;i++)
  {
    var bmp:BitmapData=new BitmapData(iconWidth, iconWidth);
    bmp.copyPixels(asset.bitmapData, new Rectangle(iconWidth*i, 0, iconWidth, iconWidth), new Point(0, 0));
    images.push(bmp);
  }			
}
__________________
http://komimap.ru


Последний раз редактировалось gnus; 07.09.2009 в 18:39.
Старый 07.09.2009, 18:48
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 4  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
wvxvw нет то что писать их придется это однозначно) сами они в проекте не появятся..просто думал может есть какой нить вариант с хмлем или типа того, задал имена, задал шаблонные именна классов и пустил генерацию в цикле. Пока что меня больше всего смущает то что каждая иконка определяется как класс и обьявляется видимой всему проекту, этого я немогу сделать и это меня заводит в тупик непонимания.
Смущает именно наличие большого куска однотипных операций, как будто у меня есть 20 кнопок и я для каждой отдельно прописываю одно и тоже действие...
gnus а если я сделаю внешний файл-хмл, и в него все запихаю, а потом по загрузке рассортирую в массив, по идее результат будет тот же?... зачем тогда столько телодвижений?

Старый 07.09.2009, 18:58
gnus вне форума Посмотреть профиль Отправить личное сообщение для gnus Найти все сообщения от gnus
  № 5  
Ответить с цитированием
gnus

Регистрация: Feb 2008
Сообщений: 100
мы про Embed говорим или про загрузку XML?
__________________
http://komimap.ru

Старый 08.09.2009, 11:24
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 6  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
gnus Embed... а по другому встроить никак не получится?...Тогда извиняюсь я думал что реально и так как я описал выше.

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

Регистрация: Feb 2008
Сообщений: 100
почему по другому не получится? это просто 1 из вариантов, который я использую. придумай другой и реализуй.
__________________
http://komimap.ru

Старый 08.09.2009, 16:38
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 8  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Пишите блокнотом bat файл, к примеру такой
Код:
dir >fileList.txt
Кидаете его в папочку с рисунками, кликаете на нем два раза. Получаете файл вот такой
Код:
 Том в устройстве D не имеет метки.
 Серийный номер тома: D05D-7699

 Содержимое папки D:\FLEX\RoadX\resource

21.08.2009  14:59    <DIR>          .
21.08.2009  14:59    <DIR>          ..
...
...
...
21.08.2009  13:43            16*361 рис_авария_дым.jpg
21.08.2009  13:45            16*362 рис_авария_много.jpg
21.08.2009  13:46            16*027 рис_авария_непонятки.jpg

              58 файлов      7*464*793 байт
               3 папок   8*734*277*632 байт свободно
Ну и флеш 10 програмулю небольшую
Код AS3:
package  
{
	import flash.display.*;
	import flash.events.Event;
	import flash.net.*;
	import flash.utils.ByteArray;
 
	/**
	 * ...
	 * @author http://www.murmadillo.tut.su/
	 */
	public class DocFileListPic extends Sprite
	{
		private var urlLoader:URLLoader;
 
		public function DocFileListPic() 
		{
			urlLoader = new URLLoader();
			urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
			urlLoader.addEventListener(Event.COMPLETE, phpUrlLoaderCompleteHandler);
			urlLoader.load(new URLRequest('fileList.txt'));
		}
 
		private function phpUrlLoaderCompleteHandler(evt:Event):void {
			var i:int;
			var loadStr:String = new String(urlLoader.data);
 
			var pattern:RegExp = /рис_.*/;
			var result:Object;
			var strUnSort:String = new String(urlLoader.data);
			//replase spec symbol
 
			//trace(loadStr);
			var pictureArr:Array = loadStr.split("\r");
 
			//var correctArr:Array = [];
			var picArr:Array = [];
			for (i = 0; i < pictureArr.length - 1; i++) {
				result = pattern.exec(pictureArr[i]);
				//trace(result);
				if (result!=null) picArr.push(result.toString());
			}
			trace(picArr);
			//имена файлов загружены - запускаем автоембедер
 
			var autoEmStr:String = 'package resource '+
			'{ \n\tpublic class BmpPicS {\n ' ;
			for (i = 0; i < picArr.length; i++) {
				autoEmStr += '\t\t[Embed(source = "' +
				picArr[i] + '")]\n\t\private var pic_' + i + ':Class;\n\n';
			}
 
			autoEmStr += '\t\tpublic var bmpPicArr:Vector.<Bitmap>;\n\n\t\tpublic function BmpPicS(){\n\t\t' +
			'bmpPicArr = new Vector.<Bitmap>();\n\n\t\t' +
			'var i:int;\n\t\t' +
			'for (i=0;i<' + i + ';i++)\n\t\t\t' +
			'bmpPicArr[i]=new ["pic_"+i]().bitmapData;\n';
			autoEmStr += '\t\t}\n\t}\n}';
 
			var fileReference:FileReference = new FileReference();
			fileReference.save(autoEmStr, 'BmpPicS.as');
		}
 
 
	}
 
}
запускаем - сохраняем
Код AS3:
package resource { 
	import flash.display.*;
 
	public class BmpPicS {
 		[Embed(source = "рис_7.jpg")]
	private var pic_0:Class;
 
...
...
...
...
...
		[Embed(source = "рис_мотыки.jpg")]
	private var pic_12:Class;
 
		[Embed(source = "рис_параход.jpg")]
	private var pic_13:Class;
 
		[Embed(source = "рис_пузо.jpg")]
	private var pic_14:Class;
 
		[Embed(source = "рис_рокс.jpg")]
	private var pic_15:Class;
 
		[Embed(source = "рис_сижу.jpg")]
	private var pic_16:Class;
 
		[Embed(source = "рис_синий_зонтик.jpg")]
	private var pic_17:Class;
 
 
	public var bmpPicArr:Vector.<BitmapData>;
 
	public function BmpPicS(){
		bmpPicArr = new Vector.<BitmapData>();
 
		var i:int;
		for (i=0;i<24;i++)
			bmpPicArr[i]=new this["pic_"+i]().bitmapData;
		}
	}
}

Старый 08.09.2009, 20:39
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 9  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
Alex Lexcuk, омг, спс большое имено это я и хотел:
Код AS3:
for (i = 0; i < picArr.length; i++) {
	autoEmStr += '\t\t[Embed(source = "' +
	picArr[i] + '")]\n\t\private var pic_' + i + ':Class;\n\n';
}

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

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

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


 


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


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