Показать сообщение отдельно
Старый 05.06.2010, 02:50
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 3  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Код AS1/AS2:
Stage.scaleMode = 'noScale'; // отключаем масштабирование содержимого
Stage.align = 'TL'; // устанавливаем "ноль" слева вверху
 
// запоминаем исходную ширину и высоту картинки
var imgw = mcImg._width;
var imgh = mcImg._height;
 
// устанавливаем принудительное сглаживание картинки
mcImg.forceSmoothing = true;
 
// создаем объект с единственным методом - onResize
var resizer:Object = new Object();
 
resizer.onResize = function () {
	var sw = Stage.width; // ширина сцены
	var sh = Stage.height; // высота сцены
 
	// позиционирование клипов
	// тут идет математики, напрямую к флешу местами не относящаяся
	if (sw/sh > imgw / imgh) { // если картинку надо будет обрезать по высоте
		mcImg._x = 0; // левый край позиционируем на ноль по горизонтали
		mcImg._width = sw; // ширину картинки вытсавляем по ширине сцены
		mcImg._height = Math.round(sw * imgh / imgw); // выставляем высоту картинки, пропорционально ее изначальным размерам (чтобы не было искажения)
		mcImg._y = Math.round((sh - mcImg._height)/2); // сдвигаем ее вверх на половину выступающей за пределы сцены части
	} else {
		// аналогичный алгоритм, если размер сцены таков, что у картинки надо обрезать левый и правй край
		mcImg._y = 0;
		mcImg._height = sh;
		mcImg._width = Math.round(sh * imgw / imgh);
		mcImg._x = Math.round((sw - mcImg._width)/2);
	}
//	mcImg._x = sx; - эти две строчки лишние, забыл их убрать
//	mcImg._y = sy;
	// позиционируем текстовые элементы
	// в принципе их можно и не трогать, если они всегда слева вверху находятся
	// и их положение не зависит от размера сцены
	mcTxt1._x = mcTxt2._x = mcTxt3._x = 10;
	mcTxt1._y = 20;
	mcTxt2._y = mcTxt1._y + 50;
	mcTxt3._y = mcTxt2._y + 50;
}
 
// вызываем один раз наш метод, чтобы выстроить элементы в соответствии с текущими размерами сцены
// очень может быть что onResize полюбому сам должен вызваться, но лишним не будет
resizer.onResize();
 
// добавляем к сцене "слушателя" событий в виде нашего объекта
Stage.addListener(resizer);


Последний раз редактировалось rainbowrussia; 05.06.2010 в 02:52.