0

将图像加载到 swf 文件时出现错误。这是我的代码:

    private var loader:Loader = new Loader(  );
    public function Battle()
    {
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
        loader.load(new URLRequest("http://www.google.com.vn/images/srpr/logo4w.png"));
    }
    private function onComplete(event:Event):void
    {

        addChild(loader);
     }

非常好,谷歌的标志出现了。但我需要操纵图像已加载的像素。我添加一个图像位图:

    private var loader:Loader = new Loader(  );
    private var image:Bitmap;

    public function Battle()
    {
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
        loader.load(new URLRequest("http://www.google.com.vn/images/srpr/logo4w.png"));
    }
    private function onComplete(event:Event):void
    {

        image =  Bitmap(loader.content);
        this.addChild(image);

    }

什么都没有出现。我在互联网上找不到任何解决方案。我尝试检测:

private function onComplete(event:Event):void
    {

        image =  Bitmap(loader.content);
        //after above line, rest of function never run
        addChild(image);   // <-- no run @@
        trace("this no run"); // <-- no run @@
    }

我使用 Flash Builder 4 并且没有错误或任何警告。有人可以告诉我一个解决方案吗?感谢阅读。

4

2 回答 2

0

如果图像与您的应用程序位于不同的域中,则您无法访问图像的像素数据(并且没有crossdomain策略文件)

于 2013-03-06T11:07:26.453 回答
0

1 您需要 Google 网站上的 crossdomain.xml :)

2 您需要使用检查策略:

var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest("http://www.google.com.vn/images/srpr/logo4w.png"), context);

但它只有在谷歌添加跨域时才有效。

3 您可以在您的域上使用少量服务器端代理。Flash 调用代理以获取带有您的 url 的文件,代理下载它并返回到 flash...

于 2013-03-06T13:20:55.353 回答