actionscript flex,如何将浏览器宽度发送到swf本身

时间:2010-03-18 17:39:19

标签: flex flash actionscript adobe

我正在使用flex,但是动作脚本的想法同样出色。

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 个答案:

答案 0 :(得分:3)

据我所知,以下情况应该有效。如果您在基本应用程序中,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>

答案 1 :(得分:0)

你只能在舞台上添加元素时知道舞台大小,你可以试试像这样的eventdelegate

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

答案 2 :(得分:0)

在浏览器调整大小时调用javascript函数。从那里获得对swf的引用,并调用AS函数来调整标签的大小。传递浏览器的宽度/高度。

参见示例here

UPDATE:更正:ExternalInterface将AS转到JS。

答案 3 :(得分:0)

目前还不完全清楚你要做什么。 xy是位置元素,widthheight是大小元素。如果您要定位标签,则应该使用top, left, rightbottom而不是xy,如果您希望将其设置为父控件大小。

如果您希望标签居中,可以使用horizontalCenterverticalCenter

如果您将其置于布局控件(如panelcanvas)内,则可以将其leftright设置为0并使用父画布大小。

如果您的标签总是位于不同的位置,具体取决于尺寸,您可以覆盖updateDisplayList来设置位置。这取决于你是否将它放在布局控件中。