我有以下ActionScript:
package {
import flash.display.Sprite;
public class Application extends Sprite {
public function Application(){
width=1000;
height=500;
}
}
}
我使用mxmlc Application.as
编译。我注意到应用程序不是舞台对象,就像我想的那样,因为舞台的宽度和高度没有变化。
如何从Application
访问舞台?
答案 0 :(得分:1)
你巧妙地误解了“舞台”的含义。该阶段是Flash必须使用的显示区域的最低级别引用,因此其大小最终由执行Flash的容器决定。
因此,当您在独立Flash播放器中查看内容时,要调整舞台大小,您可以调整播放器本身的大小,当您查看嵌入在HTML页面中的内容时,舞台仅在浏览器更改元素大小时调整大小Flash被嵌入(例如,通过Javascript)。同样,如果您的Flash嵌入到.NET应用程序中,.NET逻辑可以控制舞台的大小,依此类推。
由于这些原因,通常不可能从应用程序逻辑中调整阶段的大小,除非容器公开了一种方法。大多数浏览器确实通过JavaScript公开了这样的功能,因此在浏览器中,您通常可以通过调用JS钩子来改变Flash的嵌入元素大小来调整舞台大小。相比之下,独立播放器不会暴露这样的挂钩,因此无法调整舞台大小(当然除了可以切换全屏)。
作为旁注,正如Joel Hooks指出的那样,您可以在表单的项目中包含一个声明:[SWF(width=1000,height=500)]
。这会导致编译的SWF包含所述大小的元数据。然而,元数据只是一个建议,它完全取决于容器是否尊重它。独立播放器将尊重此类元数据(对于初始容器大小),但浏览器将完全忽略它。