我有一个flash(AS2.0)应用程序,其中包含一个需要从html表单链接触发的函数
flash函数只运行gotoAndPlay('标签名称');
所以我的HTML是
<a href="" id="flashTrigger" />
我的flash功能
function myFunction(){ gotoAndPlay("myLabel"); }
任何人都知道如何从html链接标记触发flash函数,或者从Javascript函数运行“gotoAndPlay”
我环顾四周,似乎只找到了如何从flash中启动javascript函数
这是我到目前为止的代码 - 我正在做一些愚蠢的事情 闪光灯:
ExternalInterface.addCallback( "myExternalMethod", this, myFunction ); function myFunction(){ gotoAndPlay("fade"); }
的Javascript
function executeFlash() { getObjectById("myFlashID").myExternalMethod(); } function getObjectById(objectIdStr) { var r = null; var o = document.getElementById(objectIdStr); if (o && o.nodeName == "OBJECT") { if (typeof o.SetVariable != undefined) { r = o; } else { var n = o.getElementsByTagName(OBJECT)[0]; if (n) { r = n; } } } return r; } $(function() { $('#WhatDoesmean').click(function(){ executeFlash(); }); });
我已将myFlashID设置为id:
初始'对象标签'
和IE只'嵌入标签'
编辑: 目前我的目标是闪存对象很好,这是外部(闪存侧)功能无法正常工作 - 错误消息,myExternalMethod不是函数
答案 0 :(得分:1)
您可以使用外部接口:
这个位置有一个工作示例:
希望这有帮助
干杯
答案 1 :(得分:0)
在您的Flash文件中添加回调:
//**updated**
if (ExternalInterface.available)
{
trace("ExternalInterface= " + ExternalInterface.available);
flash.external.ExternalInterface.addCallback("myExternalMethod", null, myFunction);
}
function myFunction()
{
gotoAndPlay("myLabel");
}
在你的javascript中:
function executeFlash()
{
//**updated**
alert('JS call works fine!');
getObjectById("myFlashID").myExternalMethod(); // myFlashID = your SWF object ID
}
function getObjectById(objectIdStr) {
var r = null;
var o = getElementById(objectIdStr);
if (o && o.nodeName == "OBJECT") {
if (typeof o.SetVariable != UNDEF) {
r = o;
}
else {
var n = o.getElementsByTagName(OBJECT)[0];
if (n) {
r = n;
}
}
}
return r;
}
在您的HTML中(将您的SWF对象嵌入HTML中的id = myFlashID):
<a href="" id="flashTrigger" onclick="executeFlash()" />
您可以在此处找到 ExternalInterface http://flash-reference.icod.de/
的文档答案 2 :(得分:0)
几年前我用这个来捕获flash对象:
var flashObj = getFlash("Flash_Name");
function getFlash(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));
}
}
然后flashObj.gotoAndPlay();
应该有效
答案 3 :(得分:0)
我设法通过使用SWFObject来解决问题
通过SWFObject.js轻松访问flash对象方法,但是没有它就没有工作。不知道为什么会这样。
所有上述建议都适用于SWFObject.js,但没有它似乎没有工作
为每个人的建议干杯
安迪