-2

我需要帮助!我想在 Flash AS3 中加载图片 url 我在显示图片的 javascript 中有以下代码。但是我想在 Flash 中加载相同的引用..

FB.api('/me?fields=username', function(response) { 
function detect(URL) {
       var image = new Image();
       image.src = URL;
       image.onload = function() {
       var result = 'result'; // An example result
    }
document.body.appendChild(image)
}
detect("https://graph.facebook.com/" + response.username + "/picture?width=200&height=200");
4

2 回答 2

1

Loader您可以使用类在 Actionscript 3 中加载图像:

import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.IOErrorEvent;

function loadImage(url:String):void
{
    var l:Loader = new Loader();
    var r:URLRequest = new URLRequest(url);

    l.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
    l.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
    l.load(r);

    function onLoadError(e:IOErrorEvent):void
    {
        trace("Couldn't load image.");
        e.target.removeEventListener(Event.COMPLETE, onLoadComplete);
        e.target.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
    }

    function onLoadComplete(e:Event):void
    {
        trace("Load completed!");
        e.target.removeEventListener(Event.COMPLETE, onLoadComplete);
        e.target.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);

        stage.addChild(e.target.content); // e.target.content holds the loaded bitmap
    }
}

更新

您可以使用回调来监听来自 Javascipt 的调用,并且ExternalInterface

if(ExternalInterface.available) // check that SWF is running in a browser
    ExternalInterface.addCallback("loadImage", loadImage);

然后使用对 SWF 的引用从 Javascript 调用该函数。例如,如果您的 Flash 是这样嵌入的:

<embed src="flash.swf" id="myFlash" width="800" height="600" />

document.getElementById()您可以使用Javascript中的方法获取对它的引用:

var swf = document.getElementById("myFlash"); // get a reference
swf.loadImage(myURL); // call your AS3 function

更新 1

我做了这个简单的例子让你尝试并理解我告诉你的内容:下载示例

请注意,这仅适用于 Firefox,因为我使用 embed 标签嵌入了它,这在 Chrome 中存在问题,但如果您正确嵌入它,它可以跨浏览器工作。

于 2013-07-11T06:47:46.320 回答
0

您不能直接从 AS3 调用 API,因为 Facebook 的库是用 JavaScript 编写的。您必须使用 JS 作为中介。不过,Gio 上面的回答是正确的。使用 ExternalInterface API 将消息从 JS 传递到 AS。我正在粘贴您需要在下面的 JS 中进行的修改,这些修改基于他所写的内容。

他的回答是正确和完整的,你应该这样标记。

FB.api('/me?fields=username', function(response) { 
function detect(URL) {
       var image = new Image();
       image.src = URL;
       image.onload = function() {
       var result = 'result'; // An example result
    }

// Pasted from Gio's code above
var swf = document.getElementById("myFlash"); // get a reference
swf.loadImage(myURL); // call your AS3 function
}
detect("https://graph.facebook.com/" + response.username + "/picture?width=200&height=200");
于 2013-07-11T12:01:11.610 回答