Frage

Ich arbeite mit einer digitalen Buchanwendung. Ich nutze SWF Loader, um SWF-Seiten zu laden, die von PDF erstellt wurden. Ich benutze TextsNapsot, um ein Inline-Text auf den Seiten zu zeichnen. Das Highlight wird auf den jeweiligen Seiten in der gesamten Sitzung gründlich aufbewahrt, und später kann es problemlos aktualisiert / gelöscht werden. Alles funktionierte großartig, bis ich die folgenden Änderungen im SWF-Loading-Ansatz ergab, um Seitencaching zu aktivieren:

Ich lade jetzt SWF Loader-Objekt in Anwendungsspeicher und springen Sie während des Springens von einer Seite auf andere Seite ein, kopiere ich nur den Inhalt der nächsten Seite auf den aktuellen SWF-Loader, der dem Benutzer auf dem Display ist. Es gibt zwei Sätze von SWF-Ladern - eine zum Anzeigen der Seite und andere, um die nächste / vorherige Seite zu sperren. Auf der Caching-Seite lade ich den SWF in den Anwendungsspeicher und nach dem Laden, nachdem er geladen wurde, wähle ich alle Inhalte der geladenen SWF-Seite (die Kinder dieses Filmclips) in eine Array-Kollektion. Beim Ändern der Seite kopiere ich den zwischengespeicherten Inhalt in den Movieclip des SWF-Loaders, der die Seite anzeigt.

Jetzt, wenn ich auf der Seite auf der Seite auf dem Display markiere und wieder von der Seite und des Comebacks auf die Seite zurückgesetzt wird, auf der Seite, in der ich das Hervorheben gemacht habe: Es zeigt das Highlight, das ich getan habe. Sobald ich jedoch versuche, ein weiteres Highlight auf dieser Seite zu zeichnen, wird das vorherige Highlight sofort von der Seite verschwunden.

Ich vermute, dass sich das TextsnapShot-Objekt, das das Highlight während des Navigierens (auf die Zielanzeigeseite), von derjenigen unterscheidet, von derjenigen unterscheidet, die das nächste Mal auf derselben Seite erneut auf derselben Seite neuwält / aktualisiert. Obwohl die Textsnapshot-Objekt-ID für beide Objekte gleich ist.

Hier sind einige Code-Snippet:

Zum Kopieren des Inhalts des SWF Loader-Objekts im Anwendungsspeicher zwischengespeichert: generasacodicetagpre.

zum Kopieren des Inhalts an den SWF-Loader, der die Seite anzeigt: generasacodicetagpre.

Nachdem ich SWF Loaders vollständig manuell und im Handler dieses Ereignisses erhebt, nehme ich den Text Snap Shot-Objekt an. (HighlightManager.AS)

Code Ich verwende, um das Highlight manuell zu zeichnen (mit Mauszeiger auf der Seite). generasacodicetagpre.

Code Ich verwende, um den zuvor gezeichneten Highlight erneut zu neuesten zu reduzieren, wenn ich zur Seite zurückkehre: generasacodicetagpre.

Ich freue mich auf Ihre Unterstützung, um dieses Problem zu beheben.

grüße,

js

War es hilfreich?

Lösung

What you're doing is not 'caching', it's preloading previous/next pages. Also, what you're doing is really bad practice. I'm not even sure why you're casting these things into MovieClips unless the SWFs are that; if they're Flex SWFs, they'll be UIComponents. I would recommend you rethink your approach. I wouldn't even bother copying the children or anything over. Once the browser loads a SWF, it is now part of the browser cache, meaning the next time it's requested, it won't actually download it.

If you want to 'cache' your SWFs for a quicker next/previous page flipping, I would recommend you use something like SWFLoader to just load the other SWFs without actually adding it to the display, then removing it from memory. That will cache the SWFs for you in the browser. Then when the user click previous/next, just change the url of the main swfloader of the currently displayed page and it will load it up really quickly. No downloading since it's already cached, it will just need to instantiate.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top