2

Flexフレームワークでは、サイトの読み込み中にカスタムプリローダーを使用できます。

Adobeのドキュメントでは、ダウンロードから700ミリ秒後にアプリケーションの半分未満がダウンロードされた場合にプログレスバー[プリローダー]が表示されるように指定されています。'

ただし、ユーザーの95%が初めての訪問者であり、サイトが500kbを超えていることを知っているので、常にプリローダーをすぐに表示したいと思っています。プリローダーアニメーションが表示されるまで0.7秒待たなくてはなりません。

理論的には、フレームワークに「モンキーパッチ」を適用して、この.7秒の制限を取り除くことができると思います。私はその方法を理解する時間がありません、そして私は前にそれをしたことがありません。

誰か助けますか?

4

4 に答える 4

7

DownloadProgressBar を拡張する必要があります。次のコードを試してください。私は以前にこれを使用したことが あり、これに関する情報については、jesse warden のサイトをクリックしてください。

package{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;

import mx.events.FlexEvent;
import mx.preloaders.DownloadProgressBar;

public class Preloader extends DownloadProgressBar
{

    /**
    * The Flash 8 MovieClip embedded as a Class.
    */      
    [Embed(source="yourPreloaderFile.swf")]
    private var FlashPreloaderSymbol:Class;

    private var clip:MovieClip;

    public function Preloader()
    {
        super();
        clip = new FlashPreloaderSymbol();
        addChild(clip);
    }

    public override function set preloader(preloader:Sprite):void 
    {                   
        preloader.addEventListener( FlexEvent.INIT_COMPLETE ,   onFlexInitComplete );

        centerPreloader();
    }

    private function centerPreloader():void
    {
        x = (stageWidth / 2) - (clip.width / 2);
        y = (stageHeight / 2) - (clip.height / 2);
    }

    private function onFlexInitComplete( event:FlexEvent ):void 
    {
        dispatchEvent( new Event( Event.COMPLETE ) ); 
    }


    protected override function showDisplayForDownloading(time : int, event : ProgressEvent) : Boolean {
        return true;
    }

}

}

その後、メイン アプリケーション タグの preloader プロパティを Preloader クラスに変更するだけです。

于 2008-09-26T09:01:58.113 に答える
1

これは、関数のmx.preloaders::DownloadProgressBar.asの行1205にありshowDisplayForDownloadingます。

古い学校のモンキーパッチはAS3でリリースされていますが、Flexソースを編集して新しいframework.swcをコンパイルするか(明らかに苦痛)、ソースパスに含めることができます(ソースパスは.swcsをオーバーライドします)。showDisplayForDownloadingまたは、単にオーバーライドしてtrueを返すDownloadProgressBarから独自のプリローダークラスを派生させます。

フレームワークソースは'%PROGRAMFILES%\ Adob​​e \ Flex Builder 3 [Plug-in] \ sdks \ 3.0.0 \ frameworks \ projects \ framework \ src'にあり、次にパッケージパスがあります。3.1などを使用している場合は、SDKのバージョンを変更してください。

于 2008-09-26T08:09:34.167 に答える
0

遅延には次の 2 つの理由があると思います。

  1. ページが既にキャッシュされている場合、プリローダーが「点滅」することは望ましくありません
  2. プリローダー自体をロードする必要があります

プリローダーがすぐに表示されることを確実にする必要がある場合は、プリローダーだけを持つ小さなラッパー SWF を作成し、そこからメインの SWF をロードします。

于 2008-09-26T11:09:40.647 に答える
-1

進行状況を表示する前に一部のクラスをダウンロードする必要があるため、プリローダーをすぐに表示することはできません。他の方法としては、進行状況をhtmlで表示し、フラッシュムービーをロードすると表示されますが、ここに表示されます。

于 2009-04-15T10:41:19.487 に答える