我在尝试将加载动画应用到我的Flex应用程序时遇到了问题 - 整个浏览器窗口占用者。
我正在按照Adobe article中关于此的描述继承DownloadProgressBar类。基类报告的stageHeight
和stageWidth
不正确。它在构造函数中表示500x375像素,在其他地方表示0x0。为什么呢?
答案 0 :(得分:2)
我有自定义进度加载器的代码,并且从本文开始就非常好 http://askmeflash.com/article_m.php?p=article&id=7
答案 1 :(得分:1)
你解决了这个问题吗?我的flex应用程序遇到了同样的问题。 阶段返回500x375。 我的解决方法并不漂亮。在FlexEvent.INIT_PROGRESS上调用此函数。因此,当我的应用程序可用时,我会使用它的道具。
private function onFlexInitProgress( event:FlexEvent ):void {
if (Application.application != null){
var appWidth:Number = Application.application.width;
var appHeight:Number = Application.application.height;
x = (appWidth * 0.5) - (preloaderSWF.width * 0.5);
y = (appHeight * 0.5);
preloaderSWF.visible = true;
}
}
答案 2 :(得分:0)
我不确定这是否会有所帮助,但我认为可以使用Application.width,Application.height来引用Flex应用程序的大小。
http://livedocs.adobe.com/flex/3/html/help.html?content=app_container_2.html
以下问题似乎与您的问题有关:
http://www.nabble.com/Stupid-Question---Flex-width-and-height-td21423345.html
http://www.nabble.com/Flex-stage-size-td20167125.html
http://dreamweaverforum.info/flex/125327-referencing-stage-flex.html
希望他们有所帮助。
答案 3 :(得分:0)
0x0的宽度/高度测量值通常表示在阅读时(包括子组件)未完全布局的组件。检查构造函数中的测量结果肯定太早了。在将舞台设置为全屏并且您正在显示的所有内容都已布局后,您可能需要检查测量结果,可能是在应用程序creationComplete事件中,甚至可能更晚。以下链接应该是一个很好的资源:
http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/
答案 4 :(得分:0)
您要做的是向舞台添加一个事件监听器以用于其resize事件,并相应地调整预加载器的大小。否则,如果有人在显示预加载器时调整Flex应用程序的大小,则不会调整大小。
stage.addEventListener(Event.RESIZE, onStageResize);
public function onStageResize(e : Event) : void {
this.width = stage.stageWidth;
this.height = stage.stageHeight;
}
或者您可以使用以下代码将预加载器置于舞台上:
preloader.x = this.stage.stageWidth/2 - preloader.width/2;
答案 5 :(得分:0)
我在flash builder中的actionscript项目中遇到了同样的问题,使用了100%到100%的宽度和高度。我发现stage.stageWidth和stage.stageHeight是500x375,直到预加载器加载了主类后,它才会变为全屏大小。因此,预加载器中项目的定位不正确。我发现我的主类中的这一行正在更新舞台大小:
stage.scaleMode = StageScaleMode.NO_SCALE;
以下是我在预加载器中实现它的方法:
public function Preloader()
{
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function onAddedToStage(event:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
...
}