Textt

  • Textt
  • ブログ
  • ユーザー登録
  • ログイン

hajime 技術系色々

  • Flex 4.5 の spark.components.Image のプログレスバー

    Flex 4.5 で spark 版の Image コンポーネントが追加されてキャッシュ機構とかスムーズリサイズ、レターボックス化なんかの機能が使えるようになった。

    http://opensource.adobe.com/wiki/display/flexsdk/Spark+Image

    で、ロード中にプログレスバーを表示できるようにもなったんだけど、これがうまく動かない。
    SkinParts で指定されている id を割り当てられているにも関わらず、スキン側のプログレスバーが無視されている感じ。

    で spark 内のソースを追ってみたら、

    override protected function getCurrentSkinState():String
    {
        var enableLoadingState:Boolean = getStyle("enableLoadingState");
        
        if (_invalid)
            return "invalid";
        else if (!enabled)
            return "disabled";
        else if (_loading && enableLoadingState) // ← ここ
            return "loading";
        else if (imageDisplay && imageDisplay.source && _ready)
            return "ready";
        else
            return "uninitialized";
    }

    なんて箇所を発見。つまり、enableLoadingState っていうスタイルがないとローディング中の State が認識されない。(プロパティじゃないところが軽いトラップ。)

    というわけで、

    s|Image {
      enableLoadingState: true;
    }

    とか



    って指定してやれば無事にプログレスバーが表示されるよ、というお話。


    (上で挙げたアドビのページだと  ってあるけどこれはたぶんウソ、もしくはベータ時代のお話。そんなものはなかった。) 
    2011/05/10 hajime
© Textt / GreenSpace