
Код 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);