如何使用JavaScript获取swf名称?

问题描述:

我已经嵌入了一个swf 三个次命名为video.swf。如何使用JavaScript获取swf名称?

主权财富基金的名称是视频1VIDEO2VIDEO3

如果我玩swf,我想获得当前播放的swf名称?

这可能吗?

我正在使用javascript进行通信。

+0

你的问题有一点含糊:首先你声明它是关于SWF之间的通信,但是你声明你想获得当前播放SWF的名字。你能澄清一下吗?另外,你指的是什么样的名字? SWF文件名?干杯。 – amn

+0

你现在能接我吗? – Benny

+0

不是,但我会给你一个很大的答案,我们可以从那里跳舞。 – amn

我不得不为做work非常类似的一个项目Swatch/MTV(在一个页面上的多个嵌入式播放器和只打一次播放一个剪辑(播放不同的剪辑,会暂停其他剪辑等) 例如

var vids = ['video/file/72066f40bfcaea46e10460585b4e4bcb.mp4','video/file/3d5db6b87f9cdacb016c9c55afed1e08.mp4','video/file/c18b04a1a548cbf20609de70a106d7cc.mp4','video/file/4568a11f3f6a7ff467a85fefe2ac08e6.mp4','video/file/b91081d37a81692194c0e34580958c51.mp4'];   for(var i = 0 ; i < vids.length; i++){ 
       var flashvars = {}; 
       flashvars.video_url = 'http://www.swatchmtvplayground.com/'+vids[i]; 
       flashvars.video_id = i; 
       flashvars.locale = "gb"; 
       flashvars.skin = 'upperBackground:0xf8c3c4,lowerBackground:0xe2e2e2,generalControls:0x000000,slider:0xb58f8f,progress:0xe2e2e2'; 
       var params = {}; 
       var attributes = {}; 
       attributes.id = "mediaplayer"+i; 
       so = swfobject.embedSWF("http://www.swatchmtvplayground.com/flash/mediaplayer/mediaplayer.swf", "mediaplayer"+i, "578", "345", "10.0.0", false, flashvars, params, attributes); 
      } 
      function pauseAllPlayers(exceptThisOne){ 
       for(var i = 0 ; i < vids.length ; i++) if(exceptThisOne != "mediaplayer"+i) document.getElementById("mediaplayer"+i).pause(); 
      } 

让我用一个整洁的小把戏的ID我以前不知道的(执行JS用ActionScript创建)使用Zeh软件费尔南多的优秀导游:Getting the SWF’s HTML object/embed id from within the Flash movie itself

HTH

如果你三次使用同一个swf文件,你必须传入一个flash var让swf知道它是哪个实例(video1,video2或者video3)。然后,当video.swf实例开始播放时,使用AS3的ExternalInterface调用JavaScript并将该swf实例标记为当前播放的实例。

使用SWFObject嵌入在页面主权财富基金可以设置Flash变量在JavaScript这样的:

var flashvars1 = { 
    name: "video1", 
}; 

swfobject.embedSWF("video1.swf", "flashContent1", "640", "480", "10.0.0", false, flashvars1, {}, {}); 

var flashvars2 = { 
    name: "video2", 
}; 

swfobject.embedSWF("video2.swf", "flashContent2", "640", "480", "10.0.0", false, flashvars2, {}, {}); 

var flashvars3 = { 
    name: "video3", 
}; 

swfobject.embedSWF("video3.swf", "flashContent3", "640", "480", "10.0.0", false, flashvars3, {}, {}); 

在每个SWF,您将会看到,可以通过的LoaderInfo访问的“名字”无功:

var name:String = LoaderInfo(this.root.loaderInfo).parameters.name; 

你从Flash调用ExternalInterface的,像这样:

ExternalInterface.call("videoPlaying", name); 

这就需要所谓的“videoPlaying”的JavaScript函数的名称作为参数:

function videoPlaying(name) { 
    // do something with the name arg 
} 
+0

我没有想到flashVars .... gr8 ....谢谢。 – Benny