如何防止Loader更改我的应用位置和大小?

时间:2010-11-15 04:40:56

标签: actionscript-3 flex4

我使用简单的加载程序加载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);
    });                         
});

3 个答案:

答案 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);
}