我有两个SWF:一个Loader SWF和一个Loaded SWF。我需要将Loaded SWF添加到显示层次结构中,但我不想让它自由访问该阶段。例如,它可能会尝试更改scaleMode,我不希望这种情况发生。
限制加载内容访问舞台的一些好方法是什么?例如,我可能希望允许它访问stageWidth和stageHeight,而不是scaleMode或align。建议?
编辑:附加限制
我无法改变有关加载的SWF的任何信息。两个SWF都位于local-with-file-system沙箱中。这些SWF都是Flash Player 10,ActionScript 3,由Flash Professional制作。不是AIR,不是Flex。
我希望能够以某种方式拦截对舞台的调用来实现代理类或getter,但我不相信有任何方法可以实现。例如,我不相信您可以继承Stage类并使用该子类代替所有MovieClip中stage属性引用的普通Stage对象。 stage属性是只读的,因此Loader不能交叉编写脚本以指向不同的东西。
答案 0 :(得分:1)
默认情况下,Flash不允许子SWF访问其父级的属性和方法,因此您无需执行任何操作。
如果您想要允许访问权限,则需要使用Security.allowDomain()
如果您希望子SWF访问某些属性而不访问其他属性,则可以使用sandbox bridge(复杂)。或者您可以让孩子SWF“声明”它想要做什么。例如,向子项添加“requiredStageWidth”等属性。然后让父母检查这个属性的存在 - 如果它在那里,设置舞台宽度,否则什么都不做。
答案 1 :(得分:1)
一个解决方案可能是在主swf中覆盖舞台getter ,这样就可以防止加载的swf访问它。您可能必须返回一个模拟舞台的有效对象,以防止加载的swf中的错误,如果它试图访问舞台。
public override function get stage():Stage{
trace("trying to access stage")
return new Object() as Stage
}