动态调整actionscript阶段的大小?

动态调整actionscript阶段的大小?,actionscript,web,Actionscript,Web,我想基于actionscript3.0构建一个项目,它需要重新调整其舞台区域的大小,以适应客户的web浏览器的查看大小,或者在客户更改web浏览器的大小时进行调整 没有固定的纵横比,但具有最小(例如640x480)尺寸和最大(1600x1000)尺寸。当客户的web窗口长度小于最小尺寸时,该尺寸将显示一个滚动条,因此用户可以使用滚动条查看整个舞台。当客户的web窗口尺寸大于最大尺寸时,flash应用程序将出现在最上面的中间位置,它需要在包括IE6在内的大多数web浏览器上运行 当舞台大小改变时,

我想基于actionscript3.0构建一个项目,它需要重新调整其舞台区域的大小,以适应客户的web浏览器的查看大小,或者在客户更改web浏览器的大小时进行调整

没有固定的纵横比,但具有最小(例如640x480)尺寸和最大(1600x1000)尺寸。当客户的web窗口长度小于最小尺寸时,该尺寸将显示一个滚动条,因此用户可以使用滚动条查看整个舞台。当客户的web窗口尺寸大于最大尺寸时,flash应用程序将出现在最上面的中间位置,它需要在包括IE6在内的大多数web浏览器上运行


当舞台大小改变时,舞台上的内容将无法缩放。在我的例子中,项目有几十个视图,每个视图都需要处理大小变化并重新排列它们的元素,我认为这将是一项巨大的工作,因此需要任何建立这样一个项目的建议。

首先,大小调整将由JavaScript/CSS管理,不是动作脚本。也就是说,在ActionScript中,您需要做一些事情来准备这种行为

首先,您提到,您不希望SWF中的所有内容都随web页面而扩展。要对抗此默认行为,您需要更改舞台将使用的
缩放模式

stage.scaleMode = StageScaleMode.NO_SCALE;
我发现的另一个使可伸缩网站更容易使用的方法是将SWF的左上角设置为0,0。默认情况下,如果放大SWF,0,0将保留在相同的位置,并带有一些表示新大小的“填充”。我的意思是,如果你把SWF放大200个像素,而它原来是400个像素,那么0,0将从左侧下降100个像素,而不是代表左上角。以下是您可以采取的纠正措施:

stage.align = StageAlign.TOP_LEFT;
这两件事将帮助您的嵌入式SWF以一种更令人期待的方式工作,这可能会在整个项目中帮助您

最后,您提到屏幕上有许多可查看的对象,需要对调整舞台/浏览器窗口的大小作出反应。使用
Event.RESIZE
可以很容易地处理这个问题。您可以将侦听器附加到
阶段
以处理此事件,并将信息传递到反映更改的每个可视对象

您可以创建具有
handleResize()
方法的类,该方法将是视图对象的基类:

class ViewComponent extends Sprite
{

    public function handleResize(width:int, height:int):void
    {
        trace(width, height);
    }

}
这些对象中的每一个都可以列在管理总体视图的另一个类中,如下所示:

class ViewManager extends Sprite
{

    public var viewComponents:Vector.<ViewComponent>;


    public function ViewManager(stage:Stage)
    {
        viewComponents = new Vector.<ViewComponent>();
        stage.addEventListener(Event.RESIZE, _manageResize);
    }


    private function _manageResize(e:Event):void
    {
        for each(var i:ViewComponent in viewComponents)
        {
            i.handleResize(e.target.stageWidth, e.target.stageHeight);
        }
    }

}
类视图管理器扩展了Sprite
{
公共组件:向量。;
公共功能视图管理器(阶段:阶段)
{
viewComponents=新向量。();
stage.addEventListener(Event.RESIZE,_manageResize);
}
私有函数_manageResize(e:事件):void
{
对于每个(变量i:viewComponents中的ViewComponent)
{
i、 handleResize(e.target.stageWidth,e.target.stageHeight);
}
}
}

通过这种方式,您只需在
视图管理器中列出您的
视图组件
,并通过重写
handleResize()

来在自己的类中适当地处理每个组件,你能告诉我更多关于如何调整web中舞台的大小吗?@Max使用CSS将嵌入flash对象的宽度和高度设置为100%。我的要求更复杂,我说有一个最小大小和最大大小,而不仅仅是100%@Max Ok,所以使用JavaScript来调整SWF的大小,使用Math.Max()和Math.min()来确保这些行为。