Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-02-2007, 13:48   #1 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
festgelegte Ladereihenfolge während des Ladevorgangs ändern

Hallo,
es geht darum, dass Videos in einer festgelegten Reihenfolge geladen werden.
Ab einem bestimmten Punkt, kann es aber passieren, dass ein Video geladen werden soll, das noch nicht da ist und in der Reihenfolge erst viel später geladen würde.
Mein Ansatz ist der:
Ich habe ein Array mit Pfad/Filmnamen und ein Array mit Nummern.
Die Nummer beziehen sich auf die Position im Filmnamen-Array.
zb: Reihenfolge-Array = [6,0,1,2,3,6,7,8,4,5] - bedeutet, dass zuerst der Film geladen wird, der an Position 6 des Filmnamen-Array steht.
Nach dem Laden, wird die jeweils erste Position gelöscht und der nächste Film wird geladen.
Nun kann es an einer bestimmten Stelle vorkommen, dass:
  • kein Ladeprozess läuft und Film ist schon da
  • Ladeprozess läuft noch und Film ist schon da
  • Ladeprozess läuft und Datei wird noch geladen
  • Ladeprozess läuft und Datei ist noch nicht da und wird auch nicht gerade geladen
Mein Code
PHP-Code:
function abbruch(a){
    
abbrechen true;
    var 
nr:Number;
    for(
i=0;i<ladereihenfolge.length;i++){
        if(
ladereihenfolge[i] == a){
            
nr i;
        }
    }
    
//
    
if(allesgeladen == true){
        
szenewaehlen("allesgeladen -"+nr);
    }else if(
this["videoplayer"+nr].bytesLoaded == this["videoplayer"+nr].bytesTotal&&this["videoplayer"+nr].bytesLoaded>0){
        
// Ladeprozess läuft und Datei ist schon da
        
szenewaehlen("schon da -"+nr);
        
loader_mc.onEnterFrame = function(){
            if(
this["videoplayer"+aktuellladen].bytesLoaded == this["videoplayer"+aktuellladen].bytesTotal){
                
abbrechen false;
                
videoladen();
            }
        };
        
//
    
}else if(nr == aktuellladen){
        
// Datei wird gerade geladen
        
loader_mc.onEnterFrame = function(){
            if(
this["videoplayer"+aktuellladen].bytesLoaded == this["videoplayer"+aktuellladen].bytesTotal){
                
abbrechen false;
                
szenewaehlen("aktuellladen -"+nr);
                
videoladen();
            }
        };
        
//
    
}else if(this["videoplayer"+nr].bytesTotal==0){
        
// Ladeprozess läuft und Datei ist noch nicht da
        
for(i=0;i<ladereihenfolge.length;i++){
            if(
nr == ladereihenfolge[i]){
                var 
arraynr:Array = ladereihenfolge.splice(i,1);
                var 
einzelnr:Number arraynr[0];
                
ladereihenfolge.unshift(einzelnr);
            }
        }
        
abbrechen false;
        
loader_mc.onEnterFrame = function(){
            if(
this["videoplayer"+aktuellladen].bytesLoaded == this["videoplayer"+aktuellladen].bytesTotal && this["videoplayer"+aktuellladen].bytesLoaded>0){
                
videoladen();
            }
        };
    }
}
//
//
var abbrechen:Boolean false;
var 
aktuellesVideo:Number 0;
var 
naechstesVideo:Number 1;
var 
aktuellladen:Number;
var 
allesgeladen:Boolean false;
//
function videoladen(){
    if(
abbrechen == false && allesgeladen == false){
        if(
ladereihenfolge.length 0){// so lange Array nicht leer
            
ausgabe2 ladereihenfolge;
            
aktuellladen ladereihenfolge[0];// erster Wert im Array
            
this["videoplayer"+aktuellladen].load(filmnamen_array[aktuellladen]);
            
//trace(aktuell);
            
var nr:Object ladereihenfolge.shift();// ersten Wert löschen
            
trace("Laenge = "+ladereihenfolge.length);
            
this.onEnterFrame = function(){
                
ausgabe this["videoplayer"+nr].bytesLoaded;
                if(
this["videoplayer"+aktuellladen].bytesLoaded == this["videoplayer"+aktuellladen].bytesTotal){
                    
delete this.onEnterFrame;
                    
//trace("videoplayer"+nr+" = "+this["videoplayer"+nr].bytesLoaded);
                    //ausgabe = this["videoplayer"+nr].bytesLoaded;
                    //this["videoplayer"+nr]._alpha = 0;
                    
this["videoplayer"+nr]._x 0;
                    
this["videoplayer"+nr]._y 0;
                    
videoladen();
                }
            };
        }
    }
}
videoladen();
//
function szenewaehlen(nr){
    
ausgabe3 nr;
    
//trace("szenewaehlen = "+nr);

auf einem Button habe ich testweise folgendes gelegt
PHP-Code:
on(rollOver){
    var 
a:Number 9;
    
abbruch(a);

Das funktioniert nicht...
Oder gehts auch anders? Vielleicht einfacher?
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 28-02-2007, 15:48   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
es gibt keinen befehl um einen ladevorgang zu stoppen.

wenn das objekt in dem geladen wird gelöscht wird, dann sollte auch der ladevorgang beendet werden - man hört aber munkeln, das dem nicht der fall seih?

videos laden- sind das flv's??? ei warum denn laden? sowas streamt man.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 28-02-2007, 16:05   #3 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
Den Ladevorgang, der einmal angestoßen ist, will ich nicht abbrechen. Ich möchte nur die Reihenfolge danach ändern.

Ja, das sind FLVs.

Ich habe es nicht hinbekommen per Netstream zu laden, und die einzelnen Videos sozusagen in "Lauerstellung" zu halten, bis man sie braucht.
Bei mir haben die immer sofort gespielt, wenn die buffertime erreicht wurde.
Ich hatte auch schon versucht alle Videos in eine Komponente zu laden. Aber anscheinend kann man nicht zwei Videos in einer Komponente gleichzeitig abspielen(was ich am Anfang können muss).
Jetzt hab ich für jeden Film eine Komponente auf der Bühne.
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 28-02-2007, 16:51   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
a) du suchst sowas?
Reihenfolge_Array = [6,0,1,2,3,6,7,8,4,5];
//
h= Reihenfolge_Array[5];
Reihenfolge_Array[5]=Reihenfolge_Array[9];
Reihenfolge_Array[9]=h;

b)
gestreamtes muss man nicht vorladen. das wird sofort abgespielt.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 28-02-2007, 16:57   #5 (permalink)
angry > always
 
Benutzerbild von ingohill
 
Registriert seit: Jul 2001
Ort: NRW
Beiträge: 1.635
einfach mal nach "NetConnection" suchen.
hier gibst es massig beispiele, wie z.b. flv

-ingo
__________________

on air: caliban | neaera | heaven shall burn | hatebreed | the agony scene
ingohill ist offline   Mit Zitat antworten
Alt 28-02-2007, 17:25   #6 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
zu a:
Ich hatte in der Funktion, die die Videos lädt:
Code:
var nr:Object = ladereihenfolge.shift();// ersten Wert im Reihenfolge-Array löschen
und dann in der Funktion für den "Abbruch" (der Name ist falsch gewählt – ich gibs zu 8-)
PHP-Code:
if(nr == ladereihenfolge[i]){
                
// Manipulation der Laderihenfolge
                //var arraynr:Array = ladereihenfolge.splice(i,1);
                
var arraynr ladereihenfolge.splice(i,1);
                
//var einzelnr:Number = arraynr[0];
                
ladereihenfolge.unshift(arraynr);
            } 
...aber da hängte er sich immer auf und hörte auf zu laden.

zu b:
Das ist doch gerade mein Problem
Ich habe mittlerweile insgesamt 17 FLVs. Teilweise gehören mehrer FLVs zu einer zusammenhängenden Szene (jetzt fragt mich bloß nicht, warum man die auseinandergeschnitten hat ;-).
Die erste Szene hat zB vier einzelne Clips(FLVs).
Als allererstes muss ich zwei von denen gleichzeitig abspielen.
Und zwischen den einzelnen Clips soll natürlich auch keine große Pause entstehen – also nix mit "setBufferTime(4)".
Deshalb denke ich, dass ich mit Netstream hier nicht weiterkomme!?
Den Link zum Beitrag von agedoubleju kenne ich übrigens schon und noch einige mehr ;-)
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 28-02-2007, 17:57   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
durch das verändern eines arrays kann kein ladevorgang unterbrochen werden !!!???


http://www.seibsprogrammladen.de/fra...ik/Feuer/flash
hier zeige ich 3 (zugegeben kleine flv's) die werden gestreamt und laufen 'endlos'. also wenn sie fertig sind, dann beginnen die wieder von forne.

deutlich zu erkennen: es gibt eine kurze pause. ohne so einen kurzen rucker wird's nicht gehen? dann sag halt, wem auch immer, sie sollen die filme nicht zerschneiden.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (28-02-2007 um 17:58 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 28-02-2007, 18:06   #8 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
Juhu, ich hab rausgefunden, wie man in in Videoobjekt streamt, ohne das es sofort losläuft:
Code:
stream_ns.play("../videos/Szene_08.flv");
stream_ns.pause(true);
Jetzt muss ich nur noch wissen, ob man mehrer FLVs in ein Videoobjekt streamen kann und wie man sie dann anspricht.
Könnte man dann auch zwei gleichzeitig abspielen?
Oder sollte ich für jedes FLV ein Videoobjekt nehmen?
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 28-02-2007, 18:29   #9 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
Also das funktioniert auch nicht:
PHP-Code:
//
var connection_nc:NetConnection = new NetConnection();
connection_nc.connect(null);
var 
stream_ns:NetStream = new NetStream(connection_nc);
stream_ns.setBufferTime(30);
my_video.attachVideo(stream_ns);
stream_ns.play("../videos/Szene_08.flv");
stream_ns.pause(true);
//
this.onEnterFrame = function(){
    
ausgabe =stream_ns.bytesLoaded;
    
//trace(stream_ns.bytesLoaded);
    
if(stream_ns.bytesLoaded == stream_ns.bytesTotal){
        
delete this.onEnterFrame;
        
stream_ns.pause(false);
        
//stream_ns.close();
        //var connection_nc:NetConnection = new NetConnection();
        //connection_nc.connect(null);
        
var stream2_ns:NetStream = new NetStream(connection_nc);
        
my_video2.attachVideo(stream2_ns);
        
stream2_ns.play("../videos/Szene_09.flv");
        
stream2_ns.pause(true);
    }
}; 
ich kann eine laden. Das funktioniert. Aber mit
Code:
stream2_ns.pause(false); auf einem Button passiert nichts.
Ich hab mal irgendwo gelesen, das man vor dem Aufbau einer neuen Netconnection die alte schließen soll. Wenn ich das mache passiert laut Hilfe das:
Zitat:
Stoppt die Wiedergabe der Daten im Stream, legt für die Eigenschaft NetStream.time den Wert 0 fest und macht den Stream für andere Verwendungszwecke verfügbar. Durch diesen Befehl wird auch die lokale Kopie einer FLV-Datei gelöscht, die über HTTP heruntergeladen wurde. Auch wenn Flash Player die lokale Kopie der erstellten FLV-Datei löscht, verbleibt möglicherweise eine Kopie der Videodatei im Cache-Verzeichnis des Browsers.
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 28-02-2007, 19:04   #10 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
pro film einen eigenen stream

und pause machen kann man nur, wenn man schon was gearbeitet hat.
soll heissen, du musst den film zumindestens eine klitze kleines stückchen laufen lassen. erst dann geht das mit der pause.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 28-02-2007, 21:36   #11 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
Zitat:
pro film einen eigenen stream
hab ich doch versucht...
...und auch ein eigenes Videoobjekt?
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 11:25 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele