網頁錨點造成 Flash Preloader 失效問題:Ticore's Blog:Xuite日誌
  • Site Search
  • Google
    Web Ticore's Blog
  • 最愛連結
  • 最新文章
  • Recent Comments
  • 文章分類
  • Ticore
  • 2007-05-16 11:10 網頁錨點造成 Flash Preloader 失效問題
  • ?
  • Flash Bugs
  • 好文轉寄
  • 平均分數:0 顆星    投票人數:0
    我要評分:
    標籤 : 


    網頁錨點(Named Anchor)造成 Flash Preloader 失效問題

    看到討論 從 SWFAddress 找到的詭異的bug
    大意是說當網址有出現指向錨點的 URL (Ex: index.html#anchor) 會造成該頁內 SWF Preloader 失效
    真是很有意思的發現~

    先稍微找一下 Google,似乎沒有相關的文章
    於是自己寫測試程式

    開一空白文件 (AS 2.0)
    建立四個關鍵影格
    前三影格設立影格標籤,分別為 A、B、C (Label Type: Name or Anchor)
    在 A、B、C 三個影格加入靜態文字,分別標示 Fame Label A、B、C,與一個動態文字欄位,變數名稱為 precent
    在 A、B、C 三個影格都加上以下程式:

    this.onEnterFrame = function():Void  {
    percent = Math.floor(getBytesLoaded() / getBytesTotal() * 10000) / 100 + "%";
    };
    trace("_currentFrame : " + _currentFrame);
    stop();

    在第四個影格放入一張大圖用以突顯 Preloader 效果
    將輸出的 SWF 與相關的 HTML、JS 部署到 Local Apache 上進行測試
    使用 Fx 與 Charles 模擬網路頻寬

    分別用以下網址進行測試

    http://localhost/AnchorTest/AnchorTest.html
    http://localhost/AnchorTest/AnchorTest.html#A
    http://localhost/AnchorTest/AnchorTest.html#B
    http://localhost/AnchorTest/AnchorTest.html#C
    http://localhost/AnchorTest/AnchorTest.html#
    http://localhost/AnchorTest/AnchorTest.html#UndefinedAnchor

    Flash Player Plugin 是具有偵測 HTML Acnhor 的功能的
    不過功能太陽春,所以才會有 SWFAddress 這類東西出現

    經過測試發現,Label Type 甚至不需要選擇 Anchor,HTML 輸出設定也不用改
    Flash Player Plugin 就會對 URL Anchor 有所反應
    這未免也太自動了一些

    Flash Player Plugin 對於 Anchor 的撥放行為比較特殊
    它會一邊下載一邊搜尋是否有對應的 Frame Label
    並不會馬上立即進行撥放,直到找到對應的 Frame Label
    或是整個 SWF 下載完仍找不到,才會開始撥放

    所以當遇到了像這樣的錨點 AnchorTest.html#
    Flash 撥放器根本不可能在 SWF 內找到空字串 "" 的影格標籤
    也沒有辦法在 Flash IDE 內設置這樣的標籤 ""

    不過我們可以使用 UltraEdit 修改 SWF
    找到 Frame Label A 之後
    將 A 改為 0x00
    再次使用 AnchorTest.html# 進行測試
    就會發現 Preloader 可以正常執行了

    這或許不算是一個 Bug
    而是 Flash Anchor 功能延伸出來的行為
    不過誰會想得到呢?
    或許 Adobe 應該要提供取消 Flash Anchor 功能的方式

     



    Ticore / Xuite日誌 / 回應(4) / 引用(0) / 好文轉寄
  • 回應