如何立即开始播放.swf文件?

时间:2012-07-23 17:40:03

标签: flash swfobject swfloader adobe-captivate

我有一些使用adobe captivate 6创建的培训视频。当我观看视频时,他们需要在10到60秒之间加载任何播放开始之前,窗口中显示任何内容(文件范围从1MB到5MB) )。我正在使用jquery将它们加载到jquery-ui对话框中,只需让文件完全下载后浏览器开始播放。

我遇到的问题是,等待.swf在播放开始前完全下载。我希望它能够开始播放,然后在播放时继续下载,这样用户就不必等待很长时间才能看到内容。

像这样的视频培训对我来说是一个相对较新的领域,所以我真的不知道我的选择是什么......如果.swf不是要走的路,使用captivate有什么选择?我尝试了captviate的youtube导出,但它调整了视频的大小以适应youtube,使得字体太小而无法读取。

当我在youtube上观看视频时,它们会立即开始播放,但在观看时继续下载...我喜欢这个概念并想知道是否可以使用我现有的.swf文件来实现这样的功能。

此问题有哪些选项和可能的解决方案?

提前感谢您的帮助。

这是加载对话框的调用:

<span onclick="$('#popup_tutorial').dialog('option', 'position', 'top').dialog('option','title','Portfolios - Creating a new portfolio').load('tutorials/acctg_payments.php').dialog('widget').dialog('open');" class="a_link edit_link">View Tutorial</span>

这是#popup_tutorial html:

<div id="popup_tutorial" style="text-align:left"></div>
<script type="text/javascript">
    $("#popup_tutorial").dialog({
        bgiframe: true,
        autoOpen: false,
        Height: 740,
        width: 900,
        modal: false,
        close: function () {$(this).empty();}
    });
</script>

这里是.php页面,它包含.swf代码并放在#popup_tutorial div中:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>

<script src="standard.js" type="text/javascript"></script>
</head>

<body   bgcolor="#f5f4f1">

    <div id="CaptivateContent">&nbsp;
    </div>
    <script type="text/javascript">
       var so = new SWFObject("acctg_payments_making.swf", "Captivate", "881", "720", "10", "#CCCCCC");
        so.addParam("quality", "high");
        so.addParam("name", "Captivate");
        so.addParam("id", "Captivate");
        so.addParam("wmode", "window");
        so.addParam("bgcolor","#f5f4f1");
        so.addParam("menu", "false");
        so.addParam("AllowScriptAccess","always");
        so.addVariable("variable1", "value1");
        so.setAttribute("redirectUrl", "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash");
        so.write("CaptivateContent");
    </script>


    <script type="text/javascript">
        document.getElementById('Captivate').focus();
        document.Captivate.focus();
    </script>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

Captivate并且大部分Flash电影都不像电影那样以线性方式构建,即使它们的某些内容可能以这种方式出现。为SWF提供了大量的交互式逻辑。也就是说,您几乎可以看到它们就像DLL,EXE,Java JAR或IPA(iphone),在下载整个二进制文件之前无法运行。

也就是说,SWF为内容开发人员提供了在SWF部分加载时运行和播放内容的方法,但是由生成SWF的开发人员或程序生成此输出的能力决定,通常它非常复杂它是大多数开发人员尚未追求的水平。在你的情况下,我不认为Captivate提供这样的能力。

然而,如果你想要实现它,你可以考虑将Captivate电影分解成更小的电影并将它们链接在一起,但我怀疑Captivate会在当前电影播放时预装下一部电影。

答案 1 :(得分:0)

Captivate 6和7(可能是8)允许您确定在电影开始播放之前应下载的电影百分比。我有一段时间没有使用Captivate 6所以我不记得它在UI中的确切位置,但是在Captivate 7上,从主菜单中选择Quiz -> Quiz Preferences以打开首选项对话框。在那里你可以调整preloader %。这是在播放开始之前将下载的电影的百分比。默认情况下,它设置为100%,这可以解释为什么您的电影在完全下载之前不会开始。

根据我的经验设置,此%将在某些设置中有效,但在其他设置中无效。不过,值得一试。

-Patrick