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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.08.2011, 02:28
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию Алгоритм построения фоток по 2 штуки

Все мы знакомы с фотогаллереями типа Книга ( 2х страничная галлерея ).

И так у нас есть xml через который мы грузим все фотки. В итоге есть массив битмап дат, и соотв им вектор конфигурации.
Выглядит приблизительно так :
Код AS3:
var a:Array = e.content /*array of bitmap*/
var b:Array = [ type , type , type ]
Тоесть каждой битмапке соотв тип.
Типов может быть два - 2х страничный и 1 страничный, предоставим их как '1' и '2' соотв. Но, тип 1 страничный может быть только у 1 позиции и последней ( обложки )

Использую цикл такого типа :

Код AS3:
var bwidth:int = _rwidth + _rwidth / 5;
var bheight:int = _rheight + _rheight / 4;
var alen:int = a.length;
var cols:int = 3;
 
for (var i:int = 0; i < alen; i++) {
 
				var row:int = Math.floor(i / cols);
				var xcoord:int = (i - row*cols) * bwidth;
				var ycoord:int = row * bheight; 
                                var con:ImageContainer = new ImageContainer(_rwidth, _rheight, bit , bit1, i.toString() );
                                con.x = xcoord;
				con.y = ycoord;	
}
Задача :
Если тип для первый картинки тип 1, создается контейнер с этой 1ой фоткой, точно так же и для последней, если же тип 2, создается контейнер сразу с 1й и 2й картинкой. В моем примере bit , bit1 это 2 возмлжные картинки.
Проблема в следующем цикл пробегает по всем картинкам и создает соотв столько контейнеров сколько картинок. А мне же нужно, объединять картинки если тип 2, и контейнеров соотв будет в 2 раза меньше...
Вообщем наверное туго пояснил, но надеюсь кто то сможет понять о чем идет разговор.

Вот полный код ( корявый ) как я пытаюсь это решить, хотя до конца и не получилось...

Код AS3:
private function onLoad(e:CustomMultiLoaderEvents):void 
		{
 
			var a:Array = e.content;
 
			var bwidth:int = _rwidth + _rwidth / 5;
			var bheight:int = _rheight + _rheight / 4;
			var alen:int = a.length;
			var cols:int = 3;
			var n:int = 1;
			var b:Boolean;
 
			for (var i:int = 0; i < alen; i++) {
 
				var row:int = Math.floor(i / cols);
				var xcoord:int = (i - row*cols) * bwidth;
				var ycoord:int = row * bheight;
 
				var bit:Bitmap = null;
				var bit1:Bitmap = null;
 
 
 
				if (!i || n == alen - 2) {
 
					bit = new Bitmap((a[i] as Bitmap).bitmapData);
 
 
				}
 
				 else {
 
					bit = new Bitmap( (a[n] as Bitmap).bitmapData);
					bit1 = new Bitmap( (a[n + 1] as Bitmap).bitmapData);
					if (n != alen - 2  ) n = n + 2;  
					else break;
				 }
 
				var con:ImageContainer = new ImageContainer(_rwidth, _rheight, bit , bit1, i.toString() ,_content[i].type);
				con.addEventListener(MouseEvent.CLICK , onClick);
 
				_dynamicContent.addChild(con);
				con.x = xcoord;
				con.y = ycoord;	
 
			}
КОнечно же это полная порнография, поэтому думаю помогут светлые умы. Спасибо
__________________
Марк Tween

Старый 11.08.2011, 10:03
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 2  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Как бы название темы не очень то соответствует проблеме.

Но всё же, я не понял в чем именно затык, зачем держать битмапдаты сразу всех фоток и тем более зачем сразу строить контейнеры для всех страниц? Разве что только для превьюшек.

Может, действительно, повествование не очень и визуальный пример чего то похожего помог бы понять суть.

Из всего вышеизложенного понял что проблема отделить первую и последнюю картинки и остальные объединить по две?
__________________
trace("Остановите Землю, я сойду!!!");

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Разве не проще обработать обложки отдельно, а циклом пройтись только по страницам, увеличивая итератор не на 1 а на 2, и начиная с индекса 1 а не 0, и заканчивая индексом длина - 2 (может -3)))? Особенно если есть гарантия, что страниц – четное кол-во.

Добавлено через 6 минут
Если типов всего два, можно было обойтись булевым флагом, скажем isTitle или isCover = true//false
Конструктор ImageContainer мог бы и сам принимать решение, когда одна из битмап == null
Дополнительный каунтер n по-моему только запутывает код)
Ну это так, общие замечания.
__________________
Reality.getBounds(this);

Старый 11.08.2011, 11:21
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 4  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
Код AS3:
bit = new Bitmap((a[i] as Bitmap).bitmapData);
ололо..

а вообще, я не понимаю зачем громадить непонятные массивы из которых потом не понятно как собрать массив определенных объектов содержащих битмапы...не проще ли сразу в парсере на горячую, когда все атрибуты под руками сразу нагородить массив того, что нужно?
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

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

Регистрация: Apr 2010
Сообщений: 219
Может сначала отсортировать массивы нужным образом, а потом хоть сразу контейнеры, хоть потом: если выстроено правильно на этот счет можно будет уже не парится.

Старый 11.08.2011, 14:55
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Всем спасибо, Wolsh респект за идею. Да разговор идет про превьюшки
__________________
Марк Tween

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

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

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


 


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


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