Показать сообщение отдельно
Старый 21.05.2011, 22:47
DZHETIGAPA вне форума Посмотреть профиль Отправить личное сообщение для DZHETIGAPA Найти все сообщения от DZHETIGAPA
  № 1  
Ответить с цитированием
DZHETIGAPA

Регистрация: Dec 2010
Сообщений: 342
По умолчанию Неправильный расчет ширины в браузере

Уже несколько часов пытаюсь решить пробелму непонятного поведения в браузерах флэшки.

Есть менюшка, которая состоит из частей. Все это запихивается в спрайт. Если ширина менюшки больше ширины сцены, то менюшка скайлится по ширине сцены. Аналогично ставится на ресайз. Вот код:
Код AS3:
private function onStage(e:Event):void 
{
	removeEventListener(Event.ADDED_TO_STAGE, onStage);
	stage.addEventListener(Event.RESIZE, onResize);
	root.transform.perspectiveProjection.projectionCenter = new Point(stage.stageWidth / 2, stage.stageHeight / 2);
	//Дабавление подменюшек в спрайт-меню
        for (var i:int = 0; i < 10; i++ )
       {
	        try
	       {
		massivMenu[i] = new PartMenu(Lib.data.cat[4].string[i + 1].text[1]);
		massivMenu[i].x = menuWidth;
		massivMenu[i].buttonMode = true;
		massivMenu[i].mouseChildren = false;
		massivMenu[i].name = String(i);
		massivMenu[i].addEventListener(MouseEvent.CLICK, clickMenu);
		massivMenu[i].addEventListener(MouseEvent.MOUSE_OVER, menuOver);
		massivMenu[i].addEventListener(MouseEvent.MOUSE_OUT, menuOut)
		menuWidth += massivMenu[i].width +2;
		menu.addChild(massivMenu[i]);
		}
		catch (err:Error)
		{
 
		}
	}
	menu.x = -Math.round(menu.width / 2);
       menu.y = -Math.round(menu.height / 2)  ;
       addChild(menu);
      this.y = stage.stageHeight/2 + 100;  
      this.x = stage.stageWidth / 2;
      if (menuWidth > stage.stageWidth) this.width = stage.stageWidth - 150;
     stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
}
 
private function onResize(e:Event):void 
{
	this.y = stage.stageHeight/2 + 100;
	this.x = stage.stageWidth / 2;
	root.transform.perspectiveProjection.projectionCenter = new Point(stage.stageWidth / 2, stage.stageHeight / 2);
	if (menuWidth >= stage.stageWidth) this.width = stage.stageWidth - 150;
	else this.width = menuWidth;
}
Локально все работает отлично. Вылаживаю на сервер. При добавлении на сцену все отлично. Но, когда происходит ресайз, то менюшка очень уменьшается в размерах. Вот протрейсенные данные
Код AS3:
this.width:2652// хотя на глаз она выглядит пикселей 500
stage.stageWidth: 1891
menuWidth: 1303//постоянная величина
Как такое может быть? Реально же менюшка максимум 500 пикселей занимает, хотя ширина при данном учловии должна быть 1303.

Кто сможет объяснить, что это такое???