我正在使用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的当前大小,因为浏览器会调整大小。
答案 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)
目前还不完全清楚你要做什么。 x
和y
是位置元素,width
和height
是大小元素。如果您要定位标签,则应该使用top, left, right
和bottom
而不是x
和y
,如果您希望将其设置为父控件大小。
如果您希望标签居中,可以使用horizontalCenter
和verticalCenter
。
如果您将其置于布局控件(如panel
或canvas
)内,则可以将其left
和right
设置为0并使用父画布大小。
如果您的标签总是位于不同的位置,具体取决于尺寸,您可以覆盖updateDisplayList
来设置位置。这取决于你是否将它放在布局控件中。