情况如下:
客户端希望循环SWF文件暂停两秒钟才能再次开始播放(这是徽标上的一个很好的构建动画,但徽标不会长时间停留在屏幕上,因为电影重复了这么多用户不能长时间看到这个标志。这是无关紧要的,但很好的背景故事。)
他们为我提供了一个SWF文件,但不是FLA。当我要求FLA时,我被告知包含FLA的硬盘崩溃并且无法检索。所以,这几乎是一个死胡同。
在我尝试去编译SWF和所有有趣的东西之前,我想知道是否有任何方法可以用HTML和Javascript完成。那就是:
您怎么看?
答案 0 :(得分:5)
使用javascript不容易实现,但如果将swf加载到另一个swf中则非常容易。然后,您可以访问原始swf的主时间轴,并且您可以控制它。如果你想控制一部名为targetMovie.swf的电影,你可以这样做:
var loader:Loader = new Loader();
loader.load(new URLRequest("targetMovie.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
addChild(loader);
var logoMovie:MovieClip;
function onComplete(evt:Event):void{
logoMovie = MovieClip(loader.content);
// call pauseMovie at end of timeline
logoMovie.addFrameScript(logoMovie.totalFrames-1, pauseMovie);
}
function pauseMovie():void{
logoMovie.stop();
// delay for two seconds;
setTimeout(function(){
logoMovie.play();
}, 2000);
}
我在这里上传了一些源文件here。
答案 1 :(得分:2)
你可以使用swfObject在javascript中完全模拟这个。您需要计算动画的时间,添加两秒,然后将其设置为脚本重新启动之前的时间。下面是homestarrunner介绍的一个实例:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" src="http://swfobject.googlecode.com/svn-history/r409/trunk/swfobject/swfobject.js"></script>
<script type="text/javascript">
$(document).ready(function(){
startSwf()
})
var restartTime = 24500 //in milliseconds
function stopSwf(){
swfobject.removeSWF("swfLoop");
startSwf();
}
function startSwf() {
$("body").append("<div id='swfLoop'></div>");
swfobject.createSWF({data:"http://homestarrunner.com/newintro.swf", width:400, height:300}, null, "swfLoop");
setTimeout('stopSwf()', restartTime);
}
</script>
</head>
<body></body>
</html>
答案 2 :(得分:1)