SWFOBJECT CurrentFrame Javascript
SWFOBJECT CurrentFrame Javascript
我在播放当前帧时遇到了一个挑战。我使用的是swfobject版本2.2。
这是我的脚本:
<script type="text/javascript">
function flashplayer(flashname) {
var flashvars = {};
var params = {};
params.play = "true";
params.menu = "true";
params.scale = "noscale";
params.allowfullscreen = "true";
var attributes = {
id: "flashDiv",
name: "flashDiv"
};
swfobject.embedSWF(flashname, "myAlternativeContent", "800", "600", "9.0.0", flashvars, params, attributes);
var obj = swfobject.getObjectById("myAlternativeContent");
totalFrames = obj.totalFrames;
$('#duration').html(totalFrames);
currentFrame1 = obj.currentFrame;
$('#current').html(currentFrame1);
obj.addEventListener("onStateChange", "onytplayerStateChange");
}
function onStateChange() {
var obj = swfobject.getObjectById("myAlternativeContent");
currentFrame1 = obj.TcurrentFrame;
$('#current').html(currentFrame1);
}
function stopflash() {
var obj = swfobject.getObjectById("myAlternativeContent");
obj.Stop();
}
function PlayFlash() {
var obj = swfobject.getObjectById("myAlternativeContent");
obj.Play();
}
function FlashRewind() {
var obj = swfobject.getObjectById("myAlternativeContent");
obj.Rewind();
}
</script>
<div id="duration">
1
</div>
<div id="current">
1
</div>
<input onclick="flashplayer('../../Video/test.swf');" type="button" style="width: 300px"
value="play flash" /><br />
提前谢谢。
快速浏览一下,我发现您的代码有三个问题。
-
通过在属性对象中指定ID和名称,可以为新创建的
<object>
分配一个名称。这意味着swfobject.getObjectById("myAlternativeContent")
无法工作,因为您已将<object>
重命名为"flashDiv"。您应该使用swfobject.getObjectById("flashDiv")
。 -
您正试图在
swfobject.embedSWF
之后立即使用swfobject.getObjectById
。然而,这可能不起作用,因为在调用swfobject.getObjectById
之前可能无法完成嵌入。(BTW,getObjectById
仅用于静态发布;使用动态发布时,可以使用标准的getElementById
) -
您没有指定express install参数,因此SWFObject语法无效。使用这个替代:
swfobject.embedSWF(flashname, "myAlternativeContent", "800", "600", "9.0.0", false, flashvars, params, attributes);
#1和#2的解决方案是使用SWFObject的callback
功能。这有助于定时,确保在嵌入成功之前不会调用DOM函数。它还提供了对嵌入式<object>
的引用,使您能够避免调用swfobject.getObjectById
。
function flashplayer(flashname) {
var flashvars = {};
var params = {};
params.play = "true";
params.menu = "true";
params.scale = "noscale";
params.allowfullscreen = "true";
var attributes = {
id: "flashDiv",
name: "flashDiv"
};
function mycallback(event){
var obj = event.ref;
totalFrames = obj.totalFrames;
$('#duration').html(totalFrames);
currentFrame1 = obj.currentFrame;
$('#current').html(currentFrame1);
obj.addEventListener("onStateChange", "onytplayerStateChange");
}
swfobject.embedSWF(flashname, "myAlternativeContent", "800", "600", "9.0.0", false, flashvars, params, attributes, mycallback);
}
请记住,您可能仍然会遇到时间问题;一旦<object>
嵌入到页面中,就会调用SWFObject的回调——这并不意味着SWF已经完成加载。
您可以通过检查Flash Player的PercentLoaded
方法和JavaScript setInterval
来检查SWF的加载状态。
var obj = event.ref;
if(obj.PercentLoaded() === 100){
//do stuff
} else {
//Use setInterval to check PercentLoaded again
}
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- 使用javascript将动态表从一个html页面打印到另一个html页
- 通过javascript重定向html传递php变量