是否可以通过使用 javascript 代码开始在 Flash 播放器中播放文件?如果是这样,我会怎么做?
6 回答
尝试使用swfObject,您可以使用 javascript 使任何 actionscript 函数可见,ExternalInterface
并将它们声明为 javascript。play()
因此,您可以从您的 javascript 代码中使用(或您想要的任何其他代码)触发 actionscript 函数。
这是一个例子:
动作脚本:
import flash.external.ExternalInterface;
ExternalInterface.addCallback( "methodName", this, method );
function method() {
trace("called from javascript");
}
Javascript:
function callAS() {
swf.methodName();
}
其中 methodName 是 js 用来从 actionscript 调用方法的标识符。
看看SWFObject。有很多关于如何做到这一点的例子。
是的。可以从js中引用flash影片对象,控制页面中的flash组件。不幸的是,您这样做的方式不能跨浏览器移植。看到这个:
如果您必须从 Javascript 中执行此操作,请考虑打开自动播放参数,如下所示:
假设您已经获取了对象/嵌入的父级( vidParent ):
if( document.all) {
// toggle the object code (IE)
vidParent.innerHTML = vidParent.innerHTML.replace(/0\" name=\"autoplay/gi,'1\" name=\"autoplay');
} else {
// toggle the embed code
vidParent.innerHTML = vidParent.innerHTML.replace(/autoplay=0/gi,'autoplay=1');
}
这将使用 autoplay = 1 重新加载 Flash(此示例适用于 YouTube 播放器)。
我必须这样做才能对视频播放进行一些跟踪。
这里建议了一个有趣的方法:http ://www.permadi.com/tutorial/flashjscommand/
为我工作!
这个想法是embed
使用
function getFlashMovieObject(movieName)
{
if (window.document[movieName])
{
return window.document[movieName];
}
if (navigator.appName.indexOf("Microsoft Internet")==-1)
{
if (document.embeds && document.embeds[movieName])
return document.embeds[movieName];
}
else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
{
return document.getElementById(movieName);
}
}
并在之后调用它的Play()
方法。
getFlashMovieObject('MyMovie').Play()
支持其他几种方法,请参阅上面的链接。
您可以从 JavaScript 调用 Flash 中的任何自定义函数,这需要您同时编写 Javascript 和 Flash。
有关示例,请参见此处:http: //kb.adobe.com/selfservice/viewContent.do?externalId= tn_15683。
此外,在从 JavaScript 处理 Flash 时,使用SwfObject也有很大帮助。