Показать сообщение отдельно
Старый 11.08.2011, 02:28
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
 
Аватар для 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