我想从 flash 到 javascript 获取文本颜色和矩形背景颜色。最好的方法是什么?例如,当 Flash 电影加载时,我想将其文本颜色和矩形背景颜色发送到 javascript。然后 javascript 将在 html 文本框中显示此颜色。任何想法,如何做到这一点?
谢谢阿什什
_
问问题
391 次
2 回答
1
您可以使用ExternalInterface类
动作脚本
在初始化你的 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 嵌入代码中的方式,适用于多种浏览器。确保嵌入和对象标签具有不同的 ID。或者,例如,对于火狐浏览器的第二个对象将不会进行调用。
你可以通过添加这个函数来解决这个问题,它总是返回正确的 flash 对象,加载到 DOM 中。这是一个过时的(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
}
向 flash 请求颜色的 JS 函数
thisMovie().getColors();
于 2012-12-14T10:30:07.150 回答
0
您可以查看 ExternalInterface 类http://www.spikything.com/blog/index.php/2009/08/23/externalinterface_howto/
于 2012-12-14T10:12:11.667 回答