如何使用Javascript正确重放任何flash .swf文件?

时间:2014-06-03 15:51:43

标签: javascript flash swfobject

我正在尝试使用javascript重播.swf flash文件。目前我知道有两种方法可以做到这一点:

1)隐藏元素并再次显示

2)选择swfobject的DOM元素并调用.Rewind()和.Play()

http://jsfiddle.net/me2loveit2/4qth8/

//method one
    $('#objectID').hide();
    setTimeout(function(){
        $('#objectID').show();
    },10)
//Method 2
    document.getElementById('objectID').Rewind();
    document.getElementById('objectID').Play();

隐藏和显示的问题在于它有时在屏幕上闪烁并且在视觉上没有吸引力。 而.Rewind()或.GotoFrame(0)和.Play()的问题在于它只会倒回主时间轴。(注意只有第二个绿色块重置并设置动画)

我通常无法控制或改变闪存中的任何内容,所以我试图找到一个不涉及编辑Flash文件的解决方案。

是否有办法使用Javascript获取swf中所有影片剪辑的名称?然后我可以使用.TGotoFrame单独回放它们(' movieclip',0)

我是否可以在不实际隐藏和显示元素的情况下触发隐藏和显示的相同事件? (如何?)

或者有更好的重播方法吗?

2 个答案:

答案 0 :(得分:3)

您还可以使用swfobject重写swf标记,在没有10ms延迟的情况下重新启动它:

$(document).on('click','#replay3',function(){
    swfobject.embedSWF("http://philipp.werminghausen.us/testing/test.swf", 'replace', 275, 200, "9", null, {}, params, {}, function (res) {});

});

示例:

http://jsfiddle.net/5jqW4/

答案 1 :(得分:1)

通过删除并重新插入其中一个<param>标记,我找到了另一种方法。 这样我就不需要重新创建对象了:

http://jsfiddle.net/me2loveit2/5jqW4/10/

var param = $('#swf_movie').children().first().detach();
$('#swf_movie').append(param);