2012-10-25 60 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