如何从flash as3获取文本和矩形颜色?

时间:2012-12-14 10:07:11

标签: javascript actionscript-3 flash flash-cs4

我想从flash到javascript获取文本颜色和矩形背景颜色。 最好的方法是什么?例如,当加载flash电影时,我想将其文本颜色和矩形背景颜色发送到javascript。然后javascript将在html文本框中显示此颜色。任何想法,怎么做?
感谢
阿希什

2 个答案:

答案 0 :(得分:1)

您可以使用ExternalInterface

<强>的ActionScript

在初始化Flash影片时,您应该添加所需的可能回调。在这种情况下,您不需要回调,只需要调用JS即可。只是这样你知道怎么做,我会解释如何)

import flash.external.ExternalInterface;

function init(){
    var jsready:Boolean = ExternalInterface.available;
    if(jsready) { //checks if External callbacks can be made
        sendColors();//send the colors when movie is initializing
        try{
            //You add the callback, when JS calls getColors, actionscript will call sendColors() function
            ExternalInterface.addCallback("getColors", sendColors);     
        } catch (error:SecurityError) { 
            trace("A SecurityError occurred: " + error.message + "");
        } catch (error:Error) {
            trace("An Error occurred: " + error.message + "");
        }
    }
}
function sendColors(){
    //send your colors to JS
    ExternalInterface.call('receiveColorsFromFlash',color1,color2);
}

<强>的Javascript

如果你使用了:

<object id="myflash1">
    <embed id="myflash2">
    </embed>
</oject>

或:

<object id="myflash1">
    <object id="myflash2">
    </object>
</oject>

将Flash嵌入代码中的方法,适用于多种浏览器。确保embed和object标记具有不同的 ID。或者,例如,不会为firefox浏览器的第二个对象进行调用。

您可以通过添加此函数来解决此问题,该函数始终返回加载到DOM中的正确Flash对象。这是一个过时的(5岁)片段,可能不再适用,使用JQuery或任何其他你想要的解决方案。

如果你使用另一种嵌入flashobject的方式(SWFObject.js或任何其他方法)你可以使用jquery / getElementByid来定位一个对象。

function thisMovie() {
        if (navigator.appName.indexOf("Microsoft") != -1) {
            return document.getElementById("myflash1");
        }else if (navigator.vendor.indexOf("Apple") != -1) {
            return document.getElementById("myflash1");
        } else {
            return document.getElementById("myflash2");
        }
}

Flash将调用的JS函数:

function receiveColorsFromFlash(color1,color2) {
    //do your thing with the colors
}

要求闪光灯颜色的JS功能

thisMovie().getColors();

答案 1 :(得分:0)