从“主”类访问阶段

时间:2009-08-25 03:48:58

标签: actionscript-3 mxmlc

我有以下ActionScript:

package {
    import flash.display.Sprite;

    public class Application extends Sprite {
        public function Application(){
            width=1000;
            height=500;
        }
    }
}

我使用mxmlc Application.as编译。我注意到应用程序不是舞台对象,就像我想的那样,因为舞台的宽度和高度没有变化。

如何从Application访问舞台?

1 个答案:

答案 0 :(得分:1)

你巧妙地误解了“舞台”的含义。该阶段是Flash必须使用的显示区域的最低级别引用,因此其大小最终由执行Flash的容器决定。

因此,当您在独立Flash播放器中查看内容时,要调整舞台大小,您可以调整播放器本身的大小,当您查看嵌入在HTML页面中的内容时,舞台仅在浏览器更改元素大小时调整大小Flash被嵌入(例如,通过Javascript)。同样,如果您的Flash嵌入到.NET应用程序中,.NET逻辑可以控制舞台的大小,依此类推。

由于这些原因,通常不可能从应用程序逻辑中调整阶段的大小,除非容器公开了一种方法。大多数浏览器确实通过JavaScript公开了这样的功能,因此在浏览器中,您通常可以通过调用JS钩子来改变Flash的嵌入元素大小来调整舞台大小。相比之下,独立播放器不会暴露这样的挂钩,因此无法调整舞台大小(当然除了可以切换全屏)。

作为旁注,正如Joel Hooks指出的那样,您可以在表单的项目中包含一个声明:[SWF(width=1000,height=500)]。这会导致编译的SWF包含所述大小的元数据。然而,元数据只是一个建议,它完全取决于容器是否尊重它。独立播放器将尊重此类元数据(对于初始容器大小),但浏览器将完全忽略它。

相关问题