Loader Complete事件不适用于浏览器(AS3)

时间:2013-02-06 18:15:13

标签: actionscript-3 flash flash-cs5

我尝试在影片剪辑中加载图片并按照以下步骤更改其大小:

    var loader:Loader = new Loader();

    public function setProfilePicture(url:String){
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplte);
        loader.load(new URLRequest(url));
        addChild(loader);
    }


    protected function onComplte(event:Event):void
    {
        EventDispatcher(event.target).removeEventListener(event.type, arguments.callee);
        var image:DisplayObject = (event.target as LoaderInfo).content;
        image.width = 132;
        image.height = 132;

    }

当我用adobe flash CS5执行它时,上面的代码工作正常,但是当我尝试用浏览器(例如Chrome)打开它时,图像的大小不会改变为132x132。我尝试将addChild(loader)放在onComplete函数中,但是当我用浏览器打开它时,图像将无法加载,而使用adobe flash CS5执行仍然像以前一样。

我的建议是,当我们通过浏览器打开它时,函数onComplete不起作用,但为什么??? 任何想法都将不胜感激。

3 个答案:

答案 0 :(得分:1)

试试这个黑客:

protected function onComplte( event:Event ):void {
    EventDispatcher( event.target ).removeEventListener( event.type, arguments.callee );

    var loaderInfo:LoaderInfo = LoaderInfo( event.target );
    loaderInfo.loader.scaleX = 132 / loaderInfo.width;
    loaderInfo.loader.scaleY = 132 / loaderInfo.height;
}

答案 1 :(得分:0)

点击此链接:actionscript3 (flash) don't load images form user file in chrome

验证它是否在Chrome以外的其他浏览器中运行。这很可能是chrome中的胡椒闪光问题

答案 2 :(得分:0)

我使用了你的onComplte函数,并且无论如何都无法访问LoaderInfo的内容属性。如果所有其他方法都失败了,通过缩放Loader,仍然可以在setProfilePicture中控制图像的大小:

public function setProfilePicture(url:String){
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplte);
    loader.load(new URLRequest(url));
    loader.scaleX = 10; ////
    loader.scaleY = 10; ////
    addChild(loader);
}