簡體   English   中英

了解Flex應用程序和框架

[英]Understand Flex Application and Frames

在好奇心驅使下,我試圖了解Flex應用程序使用的生命周期。

因此,我對這一論點做了一些研究。 FlashPlayer中使用的兩個關鍵概念是:

  • SWF框架:它是包含圖形代碼和as代碼的邏輯單元
  • Flash Player幀:這是Flash運行時用來更新屏幕並由frameRate屬性定義的時間間隔

如果是這樣,您能在這兩個概念之間解釋我的關系嗎? 尤其是,它們是否與長笛配對?

主要規則是:Flash Player以swf流式傳輸; 在讀取完整的SWF幀之前,Flash Player無法渲染它。

我將嘗試解釋我需要了解的內容。 為簡單起見,假設您有兩個框架應用程序:SWF FR 1和SWF FR 2。

通常,例如在CS4中,幀被視為邏輯單元(由ShowFrame標記分隔),您可以在其中附加as3代碼。 我認為這是swf文件的簡化版本:

  • 標頭// frameRate在此處定義
  • 符號,類等…//這是FR1 === ShowFrame ===
  • 符號,類等…//這是FR2 === ShowFrame ===結束

如果有兩幀FR1和FR2,則Flash開始執行FR1,然后轉到下一幀(FR2)。 如果不停止執行,播放器將通過無限循環執行並渲染FR1和FR2中包含的代碼。 相反,例如在FR2中停止執行時,Flash Player會循環執行FR2中包含的代碼。

那么,每個SWF框架能否多次播放Flash Player框架?

當FR1正在下載(FR1未完全加載)時,是否有enterFrame事件? FR1完全加載時,是否發生第一個frameEvent? FR1在什么時間渲染? 另一種情況,如果您在FR1中調用了stop命令,則將以您指定的速率獲得enterFrame(當前幀為FR1)。 同時FR2正在下載。 完成后,您將轉到下一幀(FR2)。 FR2在什么時間渲染? Flash Player是否嘗試將FR2渲染到下一個時間間隔?

考慮以下簡單順序:

  1. FR1正在下載
  2. FR1已完全下載
  3. FR1調用stop()方法,與此同時FR2正在下載
  4. FR2已完全下載
  5. 轉到FR2
  6. FR2調用stop()方法
  7. 等等

Flash Player enterFrame事件發生時,您能為我強調一下嗎?

感謝您的時間。 最好的問候,Flex_Addicted。

盡管您似乎肯定已經在研究事物,但是您的某些假設是不正確的。 Flex是將Flash代碼編寫到一個漂亮的框架中。 因此,一切都歸結為幀,這些幀是代碼執行以及該代碼執行,呈現的結果的混合體。 當所有必需的代碼都已執行並且渲染過程完成時,該框架就完成了,Flash Player繼續進行下一個框架。

因此,您的enterFrame被調用。

現在,作為Flex開發人員來偵聽enterFrame事件已經不是通常的事了。

要了解Flex Apps,您只需要認為它們是Flash應用程序,第一幀是加載框架,第二幀是該應用程序。 其余各部分都是由子部分及其各自的時間線組成的。 這個概念肯定使人感到困惑,因為然后他們認為enterFrame應該只被調用兩次,事實並非如此。

許多人的下一個錯誤假設是,僅由於“沒有代碼在執行”,所以仍未調用框架。 事實並非如此。 僅僅因為某些事情沒有改變並不意味着就不會調用幀,而且-如果沒有適當的檢查-不會進行大量處理。

高溫超導

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM