Форум 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=200846)

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 (конечно, если сама флешка забита в страницу не жесткими рамками а процентами от общей ширины и высоты)
Код AS3:

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

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

XoJlToH 08.06.2013 14:23

Вложений: 1
Для масштабирования всех объектов в приложении я использую статический класс Layout из аттача (положить в com.xo11.utils). Для начала классу передается стейдж (если не передать - выпадет эксепшен), далее задаются базовая ширина-высота (под какой размер сделана графика).
Для того, чтобы масштабировать объекты - подписываемся на onResize и по событию всем нужным объектам задаем
Код AS3:

myMovieClip.scaleX=myMovieClip.scaleY=Layout.kX;

Если же нужно масштабировать фон - сравниваем коэффициенты
Код AS3:

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

Я использую этот способ:
Код AS3:

var scale:Number = background.height/background.width;
background.width = Math.min(stage.stageWidth, stage.stageHeight);
background.height = background.width * scale;

Ну, если фон квадратный:
Код AS3:

background.width = Math.min(stage.stageWidth, stage.stageHeight);
background.height = background.width;


wlad 09.06.2013 00:40

Дорогие друзья !

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

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


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

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