Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   пропорциональное изменение размеров фотографии (http://www.flasher.ru/forum/showthread.php?t=170166)

Ну Федя 19.10.2011 22:27

пропорциональное изменение размеров фотографии
 
Искал честно, но не нашел.
Нужно сделать, фон как тут: http://www.plus-production.it/


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

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

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

illuzor 19.10.2011 22:48

Я вот так делаю:
Код AS3:

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

Код AS3:

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 минут
На сайте, кстати, привязан бэк только к ширине стейджа. Ну это если что.


Часовой пояс GMT +4, время: 13:47.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.