Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-10-2005, 20:14   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 8
SWFs nachträglich catchen

Hallo!

Also ich möchte folgendes realisieren: Eine Website wir mit einem Preloader fertig geladen. Der Surfer kann nun die komplette Website mit allen Unterseiten/Menüs betrachen. Nun sollen aber an der linken Seite kleine Videos (SWFs) ablaufen die erst jetzt nachdem die tatsächliche Website angezeigt wird, geladen werden. Und zwar so:

Ein Video wird immer nach 20 sec oder nach einem Klick auf einem Menübutton abgespielt. Welches Video abgespielt werden soll, wird duch eine Zufallszahl festgelegt. Ist das erste Video geladen, kann dies bereichts angezeigt werden (nach 20 sec oder Menüklick) und es wird mit dem Laden des 2. Videos begonnen. Usw usw.... Ja und natürlich immer wenn eins mehr geladen wurde, geht dies in den Zufallsgenerator mit ein.

Der Preloader für die Website, die Zufallszahlen, der abspielmechanismuss usw. sind nicht das Problem. Was ich aber nicht weiß wie ich die SWFs lade vor allem aber wie nacheinander. Und wie vergebe ich dann die Instanznamen damit ich einen bestimmten Film abspielen lassen kann.

Hoffe mir kann jemand helfen!

Danke,
Tobias

Geändert von backflip (24-10-2005 um 20:16 Uhr)
backflip ist offline   Mit Zitat antworten
Alt 24-10-2005, 22:08   #2 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
Hi!
Du kannst über 2 MCs deine Filme immer im Hintergrund laden während der andere angezeigt wird.
Wenn einer lädt, versteckst du ihn (_visible=false) und spielst den anderen ab.
wenn dieser fertig gespielt hat UND der andere Film geladen ist, drehst du den Spieß um.
Du versteckst den aktuellen (zu ende gespielten) film, lädst den nächsten rein, und zeigst den vorher versteckten (frisch geladenen) und spielst ihn ab.
und das ganze wieder von vorne.

Ich würde da mit einer function arbeiten, die die Filme abwechselt. z.B. changeMovie()
mit einem MovieClipLoader kannst du die Filme gut preloaden.

Tipp: Versuche nicht immer abzuchecken welcher der Filme gerade der sichtbare ist und welcher der unsichtbare.
Wenn du deine MCs zB mov1 und mov2 benennst, kannst du in AS referenzen zu diesen verwenden.
zB.
ActionScript:
  1. playingMC = mov1;
  2. loadingMC = mov2;

wenn die dann wechseln tauscht du die Instanzen:
ActionScript:
  1. temp = playingMC;
  2. playingMC = loadingMC;
  3. loadingMC = temp;

zum checken wann der Film zu ende ist UND der andere geladen ist, würde ich bei beiden events das jeweils andere überprüfen

also beim zu ende spielen:
ActionScript:
  1. playingMC.isFinished = true;
  2. if(loadingMC.isLoaded)changeMovie();
und beim fertig laden des versteckten:
ActionScript:
  1. loadingMC.isLoaded = true;
  2. if(playingMC.isFinished)changeMovie();

Nicht vergessen die Statusvariablen (isLoaded, isFinished) durch die changeMovie-Funktion zurückzusetzen.

hoffe ich konnte dir helfen, mfg
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 24-10-2005, 22:49   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 8
Ok, vielen Dank erstmal für deine Mühe.

Das mit den MCs verstecken ist eine sehr gute Idee. Das hat mir schonmal sehr viel weitergeholfen. Das Problem ist nun aber das es 5-10 Filme werden sollen.

Wenn ich zum folgenden Ablaub einen Denkfehler habe - bitte bescheid sagen :-)

- Mit Website-Start wird der erste MC in einen unsichtbaren Container geladen
- Abfrage mit mc.onLoad
- 20 Sec setInterval wird gestarte
- nächster MC wird in einem neuen Container geladen
- mc2.onLoad ? --> Zufallsgenerator kann zwischen MC1 und MC2 wählen
- und MC3 wird geladen
- das selbe mit MC4, 5, 6 usw....

-je nachdem welcher MC läuft wird dieser auf visible = true gesetzt bis fertiggespielt

Welcher gerade geladen wird kann mir ja egal sein - wenn er fertig ist x++ für den Zufallsgenerator + nächster wird geladen.

sehe ich es richtig dass mc.onLoad = function () {anweisung}; nur einmal ausgeführt wird und zwar in dem Moment, in dem der MC eben fertig geladen ist? Oder kann das auch mehrmals sein wenn z.B. innerhalb eines setInterval oder onEnterFrame?
backflip ist offline   Mit Zitat antworten
Alt 25-10-2005, 02:59   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 8
So, hab das Script mal eben geschrieben. Mit _visible hab es irgendwie nicht so geklappt - kann aber auch an etwas anderem gelegen haben. Ich habs jetzt mit _alpha gemacht -> selber Effect.

Falls du es mal sehen willst (sind nur Testgrafiken :-) )
http://lochner.lo.funpic.de/website/website.html

Ich hab jetzt nur noch ein kleines Problem:

ActionScript:
  1. function alle2sec() // alle 2 Sekunden um die Videos nacheinander zu laden
  2. {
  3.     if(ladegerade==0)
  4.     {
  5.         if(videofinished == 0)
  6.         {
  7.             loadMovie("video1.swf","conti1"); //hier beginnt ja das Laden des 1. Films
  8.             _root.conti1._alpha = 0;
  9.             ladegerade=1;
  10.             trace("Lade Video 1");
  11.         }
  12.     }
  13.  
  14. // Abfrage ob das Video schon geladen ist !!!
  15.     else if (ladegerade==1) //da hier else if wird nachfolgender Code erst bei dem nächsten Durchlauf - also in 2 Sekunden angesprochen
  16.     {
  17.         if(_root.conti1._framesloaded == _root.conti1._totalframes) //hier die Abfrage ob das Video fertig ist
  18.     // .........
  19.  

So das Problemist jetzt folgendes: Das erste Video wird mit loadMovie geladen. Ist jetzt aber die Verbindung des Surfers sehr schlecht und es dauert über 2 Sekunden bis der Server die ersten Daten schickt, frägt er bereits ab ob das Video komplett geladen ist - soweit OK:
ActionScript:
  1. if(_root.conti1._framesloaded == _root.conti1._totalframes) {...}
Hat aber der Download des Videos noch nicht begonnen, ist _root.conti1._totalframes = 1 und somit sagt er: das Video ist fertig (da loaded = 1 und total = 1) und ich bekomme viele fehler im script... Wie kann ich das Umgehen außer die Interval-Zeit zu erhöhen?!

Danke,
Tobi

Geändert von backflip (25-10-2005 um 03:30 Uhr)
backflip ist offline   Mit Zitat antworten
Alt 25-10-2005, 03:23   #5 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Hast du es mal mit getBytesLoaded() und getBytesTotal() probiert, vielleicht ist das in deinem Fall besser.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 25-10-2005, 03:34   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 8
Na klar aber das hab ich gleich wieder verworfen....

bei
ActionScript:
  1. nou = _root.conti1.getBytesLoaded;
ist nou:
Code:
[type Function]
Und ich hab einfach keine Ahnung warum :-)
backflip ist offline   Mit Zitat antworten
Alt 25-10-2005, 03:38   #7 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Die Funktion sollst du ja auch aufrufen und nicht zwischenspeichern.
PHP-Code:
nou _root.conti1.getBytesLoaded(); 
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 25-10-2005, 03:42   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 8
ARGHHH immer diese Leichtsinnsfehler....

Danke dir!
backflip 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 09:10 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele