Actionscript Flex, как отправить ширину браузера для самого SWF - PullRequest
6 голосов
/ 18 марта 2010

Я работаю с flex, но идеи ActionScript такие же хорошие.

Тег flex <s:Application> имеет height="100%" width="100%", поэтому swf подходит для браузера по мере его изменения.

Моя проблема в том, что у меня есть <s:Label>, который мне нужно позиционировать на основе реального / текущего размера браузера.

<s:Application height="100%" width="100%">
     .....
     <s:Label text="hello" x="?" y=">" />

</s:Application>

Я слышал, что можно использовать Application.application.width;, но я получаю ошибку компиляции, которая не знает, что это такое.

Любые идеи, как это сделать. Я пытаюсь получить текущий размер SWF в браузере, так как размер браузера изменяется.

Ответы [ 4 ]

3 голосов
/ 18 марта 2010

Насколько я могу сказать, должно работать следующее. Application.application просто такой же, как этот, если вы находитесь в базовом приложении. Привязка должна позволять изменению размера после инициализации.

<s:Application height="100%" width="100%">
     .....
     <s:Label text="hello" x="{width}" y="" />

</s:Application>

Редактировать: Я только что проверил, и это работает. Чтобы поставить свой ярлык в середине сцены, вы просто должны поставить его вот так

<s:Application height="100%" width="100%">
         .....
         <s:Label text="hello" x="{width/2}" y="{height/2}" />

</s:Application>
0 голосов
/ 18 марта 2010

Не совсем понятно, что вы пытаетесь сделать. x и y - позиционные элементы, width и height - элементы размера. Если вы позиционируете метку, вам, вероятно, следует использовать top, left, right и bottom, а не x и y, если вы хотите, чтобы ее размер был размером родительского элемента управления.

Если вы хотите, чтобы метка была отцентрирована, вы можете использовать horizontalCenter и verticalCenter.

Если вы поместите его в элемент управления макетом, например panel или canvas, вы можете просто установить его left и right в 0 и иметь родительский размер холста.

Если ваша этикетка всегда находится в другом месте в зависимости от размера, вы можете переопределить updateDisplayList, чтобы установить позицию. Это относится к тому, поместите ли вы его в элемент управления макетом или нет.

0 голосов
/ 18 марта 2010

Вызовите функцию JavaScript при изменении размера браузера. Оттуда получите ссылку на swf и вызовите функцию AS, чтобы изменить размер метки. Передайте браузеру ширину / высоту.

См. Пример здесь

ОБНОВЛЕНИЕ: Исправление: ExternalInterface идет как JS.

0 голосов
/ 18 марта 2010

вы можете узнать размер этапа, только когда элемент добавлен в пределах этапа, вы можете попробовать событие-делегат, подобное этому

app.addEventListener(Event.ADDED_TO_STAGE,init);
private function init(evt:Event):void{
   trace(stage.stageWidth);
   trace(stage.stageHeight);
}
...