2011-01-02 6 views
0

So hypothetische Situation hier:Load SWF-Daten ohne Sound zu laden, dann Sound später

Ich habe eine SWF, die 30 MB ist. Sound-Dateien (Musik) machen 25MB aus, Kunst und andere Dinge machen die restlichen 5MB aus.

Wäre es möglich für mich, die 5MB der notwendigen Kunst und andere Dinge zuerst zu laden, damit der Benutzer die App bedienen kann, dann nachdem alle geladen sind und sie die App betreiben, laden Sie die verbleibenden 25MB Sounddateien in der Hintergrund?

UPDATE: Das externe Laden von SWF (oder anderen Entitäten) ist keine Option.

Antwort

2

Sie können dies tun, indem Sie die Kompilierungseinstellungen ändern und den Sound strategisch platzieren.

Standardmäßig werden alle auf der Timeline platzierten Elemente nacheinander geladen. Der Flash Player spielt die SWF-Datei ab, sobald der erste Frame geladen ist. Wenn Sie die Standardeinstellungen für die Kompilierung verwenden, wird der gesamte Bibliotheksinhalt im ersten Bild platziert, sodass der Film erst startet, wenn alles verfügbar ist.

Sie können diese Einstellungen jedoch ändern, um eine sequenzielle Ladereihenfolge zu ermöglichen: Für jedes Ihrer Bibliothekselemente können Sie im Eigenschaftenfenster die Option "In Frame 1 exportieren" deaktivieren. Jetzt werden diese Elemente nicht geladen, bis sie in der Hauptzeitleiste erscheinen. Auf diese Weise können Sie, wenn Sie Ihre Inhalte sorgfältig platzieren, alle wichtigen Elemente in den ersten Frame laden, oder wenn Sie einen Fortschrittsbalken haben, bis der Hauptfilm startet, während alle Streaming-Elemente mit der Animation geladen werden entsprechend platziert werden. Stellen Sie jedoch sicher, dass Sie nichts auslassen (indem Sie es nicht auf der Timeline platzieren), oder rufen Sie Elemente aus ActionScript auf, bevor sie vollständig geladen werden. Es ist sehr wichtig, dies gründlich zu testen, denn wenn in der Ladefolge irgendetwas schief geht, funktioniert Ihre gesamte SWF-Datei möglicherweise nicht mehr.

Denken Sie auch daran, dass die SWF sequenziell geladen wird: Wenn Sie beispielsweise in Frame 300 und in Frame 1000 einen Sound haben, wird der in 300 zuerst geladen. Wenn Sie aus einem Menü in Frame 10 zu Frame 1000 springen, müssen Sie berücksichtigen, dass der Frame möglicherweise noch nicht geladen ist. Es muss also eine Art von Prüfmechanismus (framesLoaded) und/oder Dialog geben, um den Benutzer über zusätzliche Ladezeiten zu informieren und den Absturz der Anwendung zu verhindern.