Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Постоянный бэкграунд во View (http://www.flasher.ru/forum/showthread.php?t=176380)

Light 12.03.2012 19:47

alatar, ну я же говорил, что я, к сожалению, нуб во flex)) Я конечно читаю книжки по flex, но почему-то там пишут в основном одно и то же, а про такие вот вещи как contentGroup хрен найдешь информацию)

Loader использую по старой as3 привычке. Менять фон в рантайме - планирую только масштабировать его в зависимости от ориентации.

alatar 12.03.2012 19:55

"Масштабировать" вам надо в зависимости от DPI экрана (точнее сделать несколько бэкграундов для разного разрешения), а от ориентации вам незачем зависеть (картинка у вас все равно не меняет ориентацию по отношению к наблюдателю). Делайте фон квадратным, со стороной равной большей стороне экрана.

Light 12.03.2012 20:09

Цитата:

Сообщение от alatar (Сообщение 1068562)
Делайте фон квадратным, со стороной равной большей стороне экрана.

Но экран-то прямоугольный! Если не масштабировать - часть фона будет всегда не видна. В данный момент я как бы имитирую режим stretch компонента Image в actionscript с помощью Loader'а. Хотя вариант zoom тоже подошел бы. Но совсем никак не реагировать на изменение ориентации экрана - это будет плохо выглядеть я думаю... Ведь тогда картинка просто будет висеть на x=0 y=0 и правая или нижняя часть фона будет просто обрезаться.

PS. Я принципе уже и так не реагирую на изменение ориентации, так как на нее реагирует скин, вызывая метод drawBackground при изменении ориентации. А я его просто переписал таким образом:

Код AS3:

override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
                {
                        super.drawBackground(unscaledWidth, unscaledHeight);
 
                        loader.scaleX = unscaledWidth/loader.contentLoaderInfo.width;
                        loader.scaleY = unscaledHeight/loader.contentLoaderInfo.height;
                }


alatar 12.03.2012 20:16

Цитата:

Ведь тогда картинка просто будет висеть на x=0 y=0 и правая или нижняя часть фона будет просто обрезаться.
Это не запрещает позиционирование картинки.
Да, часть фона будет не видна, но смещение картинки более дешевая операция по сравнению с масштабированием и тем более по сравнению со сменой картинки. Да и выглядит получше растянутой картинки, особенно если на фоне есть мелкие детали.

Light 12.03.2012 20:39

Последний вопрос - я правильно Embed'ю?
Код AS3:

[Embed(source="../assets/mainfon2.jpg")]
public var imgCls:Class;
public var bitmap:Bitmap;
 
bitmap = new imgCls();
addChild(bitmap);

Это самый оптимальный по производительности способ?

alatar 12.03.2012 20:43

Правильно. Только создавать и добавлять картинку надо в методе createChildren.

Light 12.03.2012 20:47

Цитата:

Сообщение от alatar (Сообщение 1068581)
Правильно. Только создавать и добавлять картинку надо в методе createChildren.

Спасибо большое!


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

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