2012-10-25 48 views
0

我有一个快速介绍,我希望<body>在介绍完成后立即加载。我怎样才能做到这一点?Flash动画完成后加载正文

我不想在动画完成后重定向到新的URL,我希望它位于同一页面上。

我可以使用jQuery代码捕获的actionscript3返回一个变量,或者jQuery可以在动画完成时检测它自己吗?

+3

这不会真的帮助你的问题,但我的建议是沟通闪光灯介绍。现在不再是90年代末了。 –

+0

我同意。但我的客户希望标志逐渐出现,亮度,对比度和模糊(可能还有火焰)等,闪光灯似乎是唯一的方法。 – soundswaste

+1

如果你是他们的开发者,你应该告诉他们,这个想法会导致他们网站的大规模跳出率和较少的访问者,因此投资回报率较低。 –

回答

1

1)Flash intro:糟糕的做法,尤其是因为如此多的用户正在使用不带Flash的设备进行浏览,或者完全禁用了Flash。 Flash也完全破坏了搜索引擎的结果。 #1推荐:如果您绝对必须了解如何在HTML5/CSS3中制作动画,但介绍屏幕通常会对可用性造成极大的伤害。使用它们的唯一真正借口是如果您尝试前置资源(例如游戏的图像精灵或仪表板的数据),则向用户提供某种反馈。

2)您不能在页面的<body>之前加载Flash。它只是不起作用。然而,鉴于这一点,你可以把一个结构是这样的:

<body> 
    <div id="flashObj"><!-- object for Flash --></div> 
    <div id="mainContent"><!-- rest of your page --></div> 
</body> 

然后,你可以从你的Flash动画的结尾调用javascript函数使用ExternalInterface的对象(见http://www.kirupa.com/flash/calling_javascript_flash_using_as3.htm的教程),但要注意有几个浏览器仍然存在该对象的问题,所以您的跨平台可用性进一步下降。

从本质上讲,在你的HTML,你会:

<style> 
    #mainContent { display:none; } 
</style> 

<script type="text/javascript"> 
    function startMainContent(){ 
     var flash = document.getElementById("flashObj"); 
     var main = document.getElementById("mainContent"); 
     if(flash && main){ 
      flash.style.display == "none"; 
      main.style.display == "block"; 
     } 
    } 
</script> 

然后在你的ActionScript,动画完成后,你会加入类似:

ExternalInterface.call("startMainContent()"); 

假设ExternalInterface的正常工作,并且您已经遵循Adobe的文档在您的<object />标记中设置正确的标志,以允许从您的Flash对象访问Javascript,这应该有所斩获。

为Adobe官方指南ExternalInterface的显示方式:http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf626ae-7fe8.html#WS2db454920e96a9e51e63e3d11c0bf69084-7f31

-1

嗨,老兄,我笑我的傻中的方式回答这个问题,但你可以这样来做。你知道你的介绍播放多少秒吗?如果是这样做: 假设你的介绍是10秒:

$(document).ready(function() { 
$("INTRO_DIV").delay(10000).hide(); 
$("body").delay(10500).fadeIn(); 
}); 

我加500毫秒的时间,使您的介绍可以正常完成。

+0

不是一个好主意......不能保证动画会在延迟开始前加载...... Flash“时钟”不一定与DOM“时钟”同步。当Flash完成后调用JavaScript函数更安全。 –

+0

好吧,我只是给你想法。 – Heart