我使用简单的加载程序加载SWF,但它会更改主应用程序的x / y位置和大小。
我使用哪个加载程序加载可以保持应用程序位置大小的swf?
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, function handleInit(event:Event):void{
var UIDesigner:UIComponent = new UIComponent();
UIDesigner.addChild(event.target.loader.content);
UIDesigner.id = "id_sample";
ApplicationObject.Instance.addElementAt(UIDesigner,0)
event.target.content.addEventListener(FlexEvent.APPLICATION_COMPLETE, function applicationCompleteHandler(event:Event):void{
var app:SystemManager = event.target as SystemManager;
var Designer:SkinnableContainer = app.application as SkinnableContainer;
Designer.id = "id_test";
ApplicationObject.Instance.removeElementAt(0);
pTabCon.addChild(Designer as SkinnableContainer);
pTabCon.horizontalScrollPolicy = "off";
pTabCon.verticalScrollPolicy = "off";
Parent.id_ComponentsTab.addChild(pTabCon);
Parent.id_ComponentsTab.selectedChild = pTabCon;
trace("swf loaded successfully");
ApplicationObject.Instance.m_ApplicationList.addItem(Designer);
});
});
答案 0 :(得分:1)
问题不在于Loader,而在于您如何使用它,特别是如何将内容添加到舞台上。
DisplayObjectContainer将根据其内容更改大小。例如,如果在宽度为200的另一个MovieClip中加载宽度为400的MovieClip,则包含的MovieClip宽度将更改为400.这是预期的行为。
在向舞台添加内容之前,可以通过使用屏蔽或修改加载的内容属性来修改此行为。
至于x& y属性,它将与您的代码有关。加载内容不应更改x& y包含Object的属性。
如果您编辑问题并添加一些代码示例,我们可能会为您提供更具体的帮助。
答案 1 :(得分:0)
你加载的swf是调用root还是stage?我的应用程序的swf动画背景有这样的问题。 怎么加载呢?
upd:您可以随时使用NO_SCALE
答案 2 :(得分:0)
loadSWFFile("resources/awords/myswf.swf");
private function loadSWFFile(fileURL:String):void
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleSWFLoadComplete0);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler0);
loader.load( new URLRequest(fileURL));
}
private function handleSWFLoadComplete0( evt:Event ):void
{
loaderWidth = evt.currentTarget.loader.width;
loaderHeight = evt.currentTarget.loader.height;
// Now set the width and height of target component same as loaderWidth and loaderHeight respectively.
}
private function ioErrorHandler0(e:IOErrorEvent):void
{
mx.controls.Alert.show("Unable to load", "IOError", 0);
}