PDA

Просмотр полной версии : как во флеше сделать "растягиваемый" фоновый рисунок?


wlad
08.06.2013, 07:23
Господа !

Всех с началом лета и вкусных шашлычков.

Если можно: я сделал игру с размерами 730*803, таким же образом подогнал к ней фоновый рисунок... Некий досадный недостаток: когда у браузера размеры несколько более роскошные, чем указанные 730*803, появляется неприятный белый фон сверху и по бокам. Как с этим бороться ?

Постараюсь поискать сам, но все равно за ответы буду признателен...

Влад

KumoKairo
08.06.2013, 08:34
Размер рисунка 730*803, размер окошечка страницы, допустим, 760 * 900
760 / 730 ~ 1,041096
900 / 803 ~ 1,120797
Можно просто взять эти значения и присвоить свойству растяжения по X и растяжение по Y. А сам размер окошка будет определен в параметре stage.stageWidth и stage.stageHeight (конечно, если сама флешка забита в страницу не жесткими рамками а процентами от общей ширины и высоты)

//Допустим у нас есть фон background
background.scaleX = stage.stageWidth / background.width;
background.scaleY = stage.stageHeight / background.height;

Немаловажное заменчание - обращаться к stage можно только после добавления экземпляра, в котором пишем код, на сцену. То есть после срабатывания события Event.ADDED_TO_STAGE

XoJlToH
08.06.2013, 14:23
Для масштабирования всех объектов в приложении я использую статический класс Layout из аттача (положить в com.xo11.utils). Для начала классу передается стейдж (если не передать - выпадет эксепшен), далее задаются базовая ширина-высота (под какой размер сделана графика).
Для того, чтобы масштабировать объекты - подписываемся на onResize и по событию всем нужным объектам задаем
myMovieClip.scaleX=myMovieClip.scaleY=Layout.kX;
Если же нужно масштабировать фон - сравниваем коэффициенты
if (Layout.back_kX > Layout.back_kY)
{
myBackground.scaleX = myBackground.scaleY = Layout.back_kX;
}
else
{
myBackground.scaleX = myBackground.scaleY = Layout.back_kY;
}
Все очень просто :)
Дополнительно можно задать режим работы (Layout.mode): MODE_UP - только увеличение, MODE_DOWN - только уменьшение, MODE_UP_DOWN - масштабирование и вверх, и вниз.
Также в классе присутствуют предзаданные части экрана - углы и центр поинтами и отдельно центр по иксу и центр по игрику
29643

MikroAcse
08.06.2013, 15:53
Я использую этот способ:
var scale:Number = background.height/background.width;
background.width = Math.min(stage.stageWidth, stage.stageHeight);
background.height = background.width * scale;
Ну, если фон квадратный:
background.width = Math.min(stage.stageWidth, stage.stageHeight);
background.height = background.width;

wlad
09.06.2013, 00:40
Дорогие друзья !

Между тем мои эксперименты с .html - видом привели к потрясающему результату: достаточно при конвертации в html выставить на html-вкладке (вызывается после ctrl+shift+F12) опцию "масштабировать" в режим "точное соответствие", и все вопросы решены !

Всем искренне спасибо за участие в дискуссии...