PDA

Просмотр полной версии : пропорциональное изменение размеров фотографии


Ну Федя
19.10.2011, 22:27
Искал честно, но не нашел.
Нужно сделать, фон как тут: http://www.plus-production.it/


фотография при изменение размеров окна меняет размер пропорционально.

Я использую вот такой код, но получается резина, подскажите как правильно сделать!
Спасибо

target.easeSize(stageWidth * target._width, stageHeight * target._height);

illuzor
19.10.2011, 22:48
Я вот так делаю:
private function placeBackground(scaledObject:DisplayObject):void {
scaledObject.scaleX = scaledObject.scaleY = 1;

var backgroundBitmapProportion:Number = scaledObject.width / scaledObject.height;
var stageProportion:Number = stage.stageWidth / stage.stageHeight;

var scale:Number;

if (backgroundBitmapProportion > stageProportion){
scale = stage.stageHeight / scaledObject.height;
} else {
scale = stage.stageWidth / scaledObject.width;
}

scaledObject.scaleX = scaledObject.scaleY = scale;
scaledObject.x = (stage.stageWidth - scaledObject.width) / 2;
scaledObject.y = (stage.stageHeight - scaledObject.height) / 2;
}

stweet
19.10.2011, 23:03
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;

public class Main extends Sprite
{
[Embed(source = 'image.jpg')] private var imgClass:Class;
private var img:Sprite;

private var imgHeight :int;
private var imgWidth :int;

public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(Event.RESIZE, RESIZE);

img = new Sprite();
img.addChild(new imgClass());
addChild(img);

imgHeight = img.height;
imgWidth = img.width;

RESIZE();
}

private function RESIZE(e:Event = null):void
{
var w:Number = stage.stageWidth;
var h:Number = stage.stageHeight;

var dx:Number = w / imgWidth;
var dy:Number = h / imgHeight;

var cf:Number = (dx > dy)?dx:dy;

img.scaleX = cf;
img.scaleY = cf;

img.x = (w - img.width) * .5;
img.y = (h - img.height) * .5;
}
}
}

упс, опоздал малость)))

Добавлено через 7 минут
На сайте, кстати, привязан бэк только к ширине стейджа. Ну это если что.