Flashhilfe.de - Flash Community

Preloader für swf inkl. FLVPlayback-Komponente [Flash 10]

 


AntwortenRegistrieren Seite1  

alex_delarge#1
Benutzerbild von alex_delarge
Beiträge: 19
Registriert: Jun 2010

21.06.2011, 10:59

Hi,

ich habe eine separate Preloader-swf mit einer UILoader-Komponente (myLoader) und dem nachfolgendem Code erstellt, die eine weitere swf (Player.swf) lädt:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
myLoader.addEventListener(ProgressEvent.PROGRESS, fortschritt);
myLoader.addEventListener(Event.COMPLETE, komplett);


function fortschritt(evt:ProgressEvent):void {
     var pct:Number=evt.bytesLoaded/evt.bytesTotal;
     this.maske_mc.scaleY=pct;
     this.prozent_txt.text=Math.floor(pct*100)+"";
 
}

function komplett(evt:Event):void {
     this.maske_mc.visible=false;
}

myLoader.load(new URLRequest ("Player.swf"));


Das funktioniert auch soweit. Das Problem dabei ist nur, dass in der Player.swf wiederum eine flv-Video-Datei mittels FLVPlayback-Komponente eingebunden wird. Diese wird jedoch anscheinend von dem Preloader nicht als direkter Teil der Player.swf erkannt: Sprich, die flv-Datei (und damit der eigentliche Byte-Fresser :-)) wird durch den Preloader gar nicht mit vorgeladen und deren Dateigröße demnach auch gar nicht mit in die Berechnung einbezogen.

Wie kann ich den Preloader denn so coden, dass er nicht nur die swf, sondern auch die dazugehörige flv-Datei gleich mit lädt und in die Berechnung einbindet?

Vielen Danke!
Schlagwörter: FLV, flvplayback, loader, preloader
vindel#2
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

21.06.2011, 11:18

Hallo,

ist dein Video in deinem Flash mit drin, oder ist es als Stream eingebunden?
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
alex_delarge#3
Benutzerbild von alex_delarge
Beiträge: 19
Registriert: Jun 2010

Themenautor/in

21.06.2011, 11:21

Hi,

also es ist nicht direkt in die swf eingebunden, sondern wird via FLVPlayback-Komponente geladen. Die swf selbst ist daher rel. klein, dateigrößenmäßig. :-)
vindel#4
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

21.06.2011, 13:26

Dann hat die Playback-Komponente eine eigene Progressbar.
Das Problem: Dein Preloader lädt alles, ein Stream wird nur 5 Sekunden im Vorraus gebuffert, somit ist dein Vorhaben nicht möglich.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
alex_delarge#5
Benutzerbild von alex_delarge
Beiträge: 19
Registriert: Jun 2010

Themenautor/in

21.06.2011, 18:43

Hi,

danke für die Info. Ich finde das nur aus folgendem Grund etwas seltsam: Und zwar liegt das ganze Problem bei mir darin, dass ich ein paar Buttons für verschiedene Kapitel habe, die darüber direkt angesprungen werden können (via CuePoints). Da das Video gleich zu Beginn aber noch nicht vollständig geladen ist, funktionieren diese leider nicht, da die entsprechenden Punkte eben noch nicht gefunden wurden. Sobald dann aber scheinbar das komplette Video geladen wurde (kurze Zeit später; das Video muss dafür nicht abgespielt werden), funktionieren die Buttons. Das bedeutet doch eigtl., dass, sobald die Player.swf geladen wurde, auch die FLVPlayback-Komponente beginnt das komplette Video im Hintergrund zu laden und nicht nur die nächsten 5 Sekunden. Von daher müsste es doch auch eine Art Workaround geben, mit dem man quasi diese Ladezeit durch eine Art Preloader überbrücken kann (sprich, dass bspw. die Kapitel-Buttons erst angezeigt werden, sobald das komplette Video im Hintergrund geladen wurde oder eben eine entsprechende Preloader-Information angezeigt wird - muss ja keine selbstständige externe swf sein, sondern diese Funktion kann ja auch direkt in die Player.swf eingebunden werden). Oder?
vindel#6
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

21.06.2011, 20:54

Ok, dann streamst du das Video nicht und lädst es Progressiv.
Da das Video per Komponente eingebunden wird, musst du auf den Preloader von der Komponente zugreifen. Hier weiß ich nicht in wie weit du diesen in deinen integrieren kannst oder halt einen zweiten Preloader einbinden musst.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
alex_delarge#7
Benutzerbild von alex_delarge
Beiträge: 19
Registriert: Jun 2010

Themenautor/in

21.06.2011, 21:53

hi,

vielen dank, das klingt ja recht positiv :-) Das wär ja erstmal egal, wo der genau eingebunden wird. Nur wie greif ich auf den Preloader der Komponente zu?
vindel#8
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

22.06.2011, 10:12

Hallo,

das geht wie du auch auf die anderen zu greifst.
Du öffnest das Komponentenfenster und wählst die "BufferingBar" aus. Zeihst die auf die Bühne und gibst der einen Instanznamen (zB. "bufbar").
Wenn dein Video noch keinen Instanznamen hat, gibst du dem auch noch einen (zB myVideo).
Ins Aktionen-Fenster schreibst du dann soetwas:
ActionScript:
1
2
3
4
import fl.video.*;
myVideo.autoPlay = false;
myVideo.bufferingBar = bufbar;
addChild(myVideo);

Jetzt kannst du mit myVideo. sämtliche Änderungen an deinem Video per Script machen - so wie hier das Autoplay abgeschaltet werden kann und der Playbackkomponente sagst, dass es eine BufferingBar gibt mit dem Namen "bufbar" - das wars!
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
alex_delarge#9
Benutzerbild von alex_delarge
Beiträge: 19
Registriert: Jun 2010

Themenautor/in

22.06.2011, 13:01

Danke für den Tipp. Ich habe das eben mal ausprobiert, nur leider weiß ich immer noch nicht, wie ich das dann zur Lösung meines Problems einsetzen soll. Wenn ich die bufbar so einbinde, dann lädt sie zu Beginn kurz (wahrscheinlich so lang, um gerade 5 Sek vorzuladen), aber sobald ich gleich zu den nachfolgenden Kapiteln springen möchte funktioniert das immer noch nicht.

Kann man das ganze so coden, dass die bufbar jedes mal wieder aktiv wird, sofern man zu einem Punkt springen möchte der zu dem Zeitpunkt noch nicht vorgeladen wurde? Bzw. kann man die bufbar alternativ dazu nutzen, um die komplette flv vorzuladen (ähnlich wie bei dem Preloader), bevor diese freigegeben wird (sprich, dass man bspw. über eine if-Anweisung die flv erst starten lässt, sobald die bufbar alle Bytes der flv vorgeladen hat - irgendwie vielleicht auch über die totalBytes und loadedBytes Eigenschaften der Playback-Komponente)?

Danke nochmal!

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2021 Sebastian Wichmann - Flashhilfe.de