сохранить положение объекта при изменении размера - PullRequest
0 голосов
/ 04 ноября 2010

я пытаюсь удерживать объект в определенной позиции на экране, не меняя его тоже (вместе со сценой)

function Resize(e:Event = null):void
{
    if ((stage.stageWidth)/(stage.stageHeight) > fundos.width/fundos.height)
    {
        fundos.width = stage.stageWidth;
        fundos.scaleY = fundos.scaleX;
    }
    else
    {
        fundos.height = stage.stageHeight;
        fundos.scaleX = fundos.scaleY;
    }
    fundos.x = (stage.stageWidth - fundos.width) /2;
    fundos.y = (stage.stageHeight - fundos.height) /2;  

    setas.x = (stage.stageWidth - setas.width + 505) /2;
    setas.y = (stage.stageHeight - setas.height);   
}

моя сцена изменяет размеры все в порядке (сохраняя соотношение сторон), и я пытаюсь добавить навигационное img, которое останется в той же позиции, что и я, изменяя размер экрана браузера

как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 04 ноября 2010

Слушайте сцену Event.RESIZE с

stage.addEventListener(flash.events.Event.RESIZE, resizeHandler);

Отправляется, когда пользователь изменяет размер сцены любым способом (увеличение в браузере, изменение размера в

В обработчике событий запустите фрагмент кода, который вы нам дали.


Кроме того, не забудьте использовать

stage.scaleMode = flash.display.StageScaleMode.NO_SCALE;

Или содержимое будет изменено.

Наслаждайтесь.

1 голос
/ 05 ноября 2010

Вот пример.Спрайт BLOB-объектов - это Объект, сохраняющий начальную позицию (50, 50)

package {
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.display.Sprite;

[SWF(backgroundColor="#00FF00", frameRate="31")]
public class Application extends Sprite {

    private var blob:Sprite;


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

    private function init() : void {
        removeEventListener(Event.ADDED_TO_STAGE, init);

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

        blob = new Sprite();
        blob.graphics.beginFill(0x000000);
        blob.graphics.drawRect(50, 50, 200, 100);
        blob.graphics.endFill();
        addChild(blob);
    }

    private function resize(event : Event) : void {
        // Do nothing on blob's Object
    }

}

}

Размер сцены изменяется (соотношение), но BLOB-объекты сохраняют позицию, даже если вы установилиВаш код для вставки) Ширина и высота SWF до 100%

...