我有一个挑战,让当前的帧播放。我使用的是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 />提前谢谢。
发布于 2011-06-26 09:50:27
快速浏览一下,我发现您的代码存在三个问题。
<object>指定一个名称。这意味着swfobject.getObjectById("myAlternativeContent")将不起作用,因为您已经将<object>重命名为"flashDiv“。您应该在尝试使用instead.swfobject.getObjectById("flashDiv") swfobject.getObjectById。然而,这可能不会起作用,因为在调用swfobject.getObjectById之前,嵌入可能不会完成。(顺便说一句,getObjectById只用于静态发布;当使用动态发布时,可以使用标准的getElementById)。
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
}https://stackoverflow.com/questions/6481242
复制相似问题