Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: WebStyleBoard. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Mittwoch, 28. April 2004, 10:30

Problem mit Flash Preloader in MX

Ich habe für meine neue Website einen Flashfilm erstellt und einen Preloader vorgeschaltet, dieser gibt die geladenen Prozente und Bytes aus.
Nun zum Problem, die Ausgabe und der Ladevorgang mit Anzeige der Bytes und Prozente funktioniert, leider springt der Film nach vollständigem laden nicht auf das gewünschte
Bild 3 des Films, er bleibt bei Bild 1 stehen.
Das Script sieht aus wie folgt, das zweite Bild enthält "gotoAndPlay(1);"

bytes_gesamt = _root.getBytesTotal() add " Bytes gesamt";
bytes_geladen = _root.getBytesLoaded() add " Bytes geladen";
prozent = int(_root.getBytesLoaded()*100/_root.getBytesTotal()) add "Prozent";
if (prozent == "100 Prozent") {
gotoAndPlay (3);
}

Kann mir jemand helfen, bin schon ziemlich verzweifelt, habe alle möglichen Fehlerquellen schon gecheckt.

Eliatranis

2

Mittwoch, 28. April 2004, 10:40

Hallo Eliatranis!

Zunächst einmal herzlich Willkommen an Board! ;)

Mmmh. Woran könnte das liegen?

a) Hast Du irgendwelches ActionScript in Frame 3?

b) Hast Du Frame 3 umbenannt? Du kannst die Frame-Nr. nämlich auch durch Bezeichnungen ersetzen...

c) Versuch mal die 3 im ActionScript in Klammern zu setzen, also:

bytes_gesamt = _root.getBytesTotal() add " Bytes gesamt";
bytes_geladen = _root.getBytesLoaded() add " Bytes geladen";
prozent = int(_root.getBytesLoaded()*100/_root.getBytesTotal()) add "Prozent";
if (prozent == "100 Prozent") {
gotoAndPlay ("3");
}


Alternativ kannst Du Dir mal eine FLA-Datei herunterladen, aus einem kürzlich gestarteten Preloader-Thread

Bei weiteren Fragen, einfach melden! ;) ;)

LapisInfernalis

P.S. Für Flash gibt es hier ein eigenes Forum... Ich verschiebe den Thread mal in das Flash-Forum...
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

3

Mittwoch, 28. April 2004, 12:34

Preloader Flash MX

Erstmal danke für die schnelle Antwort.

hab das AS nochmals geändert hab auch die 3 in "" gesetzt, gleiches Ergebnis.
Die Frames hab ich auch schon mit Bezeichnungen versehen, in Frame 3 hab ich nur eine
stop(); Funktion gesetzt.
Das AS in Frame 1 sieht jetzt so aus.

bytes_gesamt = this.getBytesTotal() add " Bytes gesamt";
bytes_geladen = this.getBytesLoaded() add " Bytes geladen";
prozent = int(this.getBytesLoaded()*100/this.getBytesTotal()) add "Prozent";
if (bytesLoaded == "Bytes_gesamt") {
this.gotoAndPlay("3");

}

Sitze schon seit Stunden dran, hoffe es gibt ne Lösung!

Eliatranis

4

Mittwoch, 28. April 2004, 12:45

RE: Preloader Flash MX

ich glaube mit .this funzt das nicht .... _root sollte es dann schon sein

zb nicht this.getBytesTotal() sondern _root.getBytesTotal()
Signatur von »TheNobody Style«

5

Mittwoch, 28. April 2004, 12:55

RE: Preloader Flash MX

mit _root. gleiches Problem, der Preloader läuft durch bis 100% bzw alle Bytes und bleibt dann stehen (in Bild 1) er macht also den Sprung zu Bild 3 nicht, (verzweifel)

Eliatranis

6

Mittwoch, 28. April 2004, 13:01

Also this sollte schon klappen.

Ändere mal:

bytes_gesamt = _root.getBytesTotal() add " Bytes gesamt";
bytes_geladen = _root.getBytesLoaded() add " Bytes geladen";
prozent = int(this.getBytesLoaded()*100/this.getBytesTotal()) add "Prozent";
if (bytesLoaded == "Bytes_gesamt") {
this.gotoAndPlay("3");
}

in

bytes_gesamt = Math.round(this.getBytesTotal()) add " Bytes gesamt";
bytes_geladen = Math.round(this.getBytesLoaded()) add " Bytes geladen";
prozent = int(this.getBytesLoaded()*100/this.getBytesTotal()) add "Prozent";
if (bytes_geladen == "bytes_gesamt") {
this.gotoAndPlay("3");
}

Ich denke der Knackpunkt ist: Wenn Du zwei Variablen vergleichst, solltest Du auch die richtigen Namen nehmen.

Du definierst zwar bytes_gesamt und bytes_geladen, vergleichst dann aber
bytesLoaded mit Bytes_gesamt...

Das KANN nicht funktionieren...
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

7

Mittwoch, 28. April 2004, 13:08

hab das probiert, gleiche Sache preloader lädt zeigt alles an und bleibt stehen.
(heul)

Eliatranis

der befehl this.gotoAndPlay("3"); wird ignoriert, der letzte der ausgeführt wird ist der aus dem 2 Frame gotoAndPlay(1);

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Eliatranis« (28. April 2004, 13:11)


8

Mittwoch, 28. April 2004, 13:12

RE: Preloader Flash MX

ahhh ... nu seh ich in deinem Code gerade etwas ...

Quellcode

1
2
3
4
if (bytesLoaded == "Bytes_gesamt") {
this.gotoAndPlay("3");

}

das kann nicht funktionieren, weil bytesLoaded niemals "Bytes_gesamt" wird.

stattdessen solltest du es mit:

Quellcode

1
2
3
if (prozent == "100 Prozent") {
gotoAndPlay (3);
}


versuchen ...

aaaaaaaaaaaaaahhhhhhhhhhhhhhhhhhhhhhhhhhh ..... :]
soeben erspähten meine Äugelein, weswegen auch das nicht funktionieren würde.

prozent = int(_root.getBytesLoaded()*100/_root.getBytesTotal()) add "Prozent";
Hier fehlt das Leerzeichen zwischen " und Prozent
also
prozent = int(_root.getBytesLoaded()*100/_root.getBytesTotal()) add " Prozent";

und alles nochmal zusammen sieht dann so aus:

Quellcode

1
2
3
4
5
6
bytes_gesamt = _root.getBytesTotal() add " Bytes gesamt";
bytes_geladen = _root.getBytesLoaded() add " Bytes geladen";
prozent = int(_root.getBytesLoaded()*100/_root.getBytesTotal()) add " Prozent";
if (prozent == "100 Prozent") {
gotoAndPlay (3);
}
Signatur von »TheNobody Style«

9

Mittwoch, 28. April 2004, 13:27

[q=Scheffe]das kann nicht funktionieren, weil bytesLoaded niemals "Bytes_gesamt" wird.
[/q]

Stimmt nicht. Wird es wohl. Nur die Variablennamen stimmen nicht...

So klappt's:

bytes_gesamt = Math.round(this.getBytesTotal());
bytes_geladen = Math.round(this.getBytesLoaded());
if (bytes_geladen == bytes_gesamt) {
this.gotoAndPlay(3);
}

und wer Prozente will:

bytes_gesamt = Math.round(this.getBytesTotal());
bytes_geladen = Math.round(this.getBytesLoaded());
prozent = Math.round((bytes_geladen/bytes_gesamt)*100)+"%";
if (bytes_geladen == bytes_gesamt) {
this.gotoAndPlay(3);
}


<EDIT>Das Problem war letzenendes, dass eine Variable im Vergleich in Anführungsstrichen gesetzt war. Entfernst Du diese, funktioniert's!</EDIT>
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LapisInfernalis« (28. April 2004, 13:33)


10

Mittwoch, 28. April 2004, 13:44

preloader

ich könnt euch küssen (nicht wörtlich nehmen)

ich knie nieder und bedanke mich!!!!!!!

Eliatranis

11

Mittwoch, 28. April 2004, 13:46

RE: preloader

na das liest man doch gern ... :]
Signatur von »TheNobody Style«

12

Mittwoch, 28. April 2004, 13:51

So... Kommando zurück...

Scheffe hatte natürlich doch recht. :P

Der Wert der Variablen kann ja nicht identisch werden, weil Du die Texte ja hinzugefügt hast...

Also:

a) Entweder verwendest Du Scheffe's Methode (wobei this und _root gleichermaßen funktionieren, SO!)... oder

b) Verwendest Du meine Variante.

Dann musst Du aber für " Bytes geladen" und " Bytes gesamt" separate, statische Textfelder einrichten.

Dies hätte, abgesehen vom schlankeren AS 8), einen Vorteil: Dadurch, dass im variablen Textfeld nur Zahlen auftauchen, brauchst Du auch nur die Schriftkonturen für die Ziffern einzubetten. Dies spart erhebliche Datenmenge!

Ich habe testweise mal eine Datei mit nur einem einzigen variablen Textfeld erstellt. Einmal habe ich alle Groß- und Kleinbuchstaben sowie alle Zahlen eingebettet, einmal nur alle Zahlen. Die Datenmengen: 10 KB zu 1,25 KB...

<EDIT>Der Unterschied mag verschwindend gering erscheinen, vor allem, wenn die Datei selber unter Umständen mehrere hundert KB hat, aber man sollte bedenken, dass der Preloader ja auch erst geladen werden muss... Da zählt jedes Byte!

Denn was nützt ein Preloader, der bei einem Modem erst nach 30 Sekunden geladen wurde? </EDIT>
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LapisInfernalis« (28. April 2004, 13:56)


13

Mittwoch, 28. April 2004, 14:05

preloader

ja, Scheffe hatte recht
aber wie du schon sagst this und _root bringen das gleiche ergebnis

trotzdem nochmal danke danke.

hat mich schon ein paar nerven gekostet.

scheiß kleines LEERZEICHEN aber man lernt ja bekannterweise nie aus


Eliatranis

14

Mittwoch, 28. April 2004, 15:28

Kein Problem, gern geschehen... ;)

Das Leerzeichen hat an sich ja keinen Fehler verursacht. Ist nur eine kosmetische Frage, ob dort 100% oder 100 % steht, spielt technisch keine Rolle...
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

15

Mittwoch, 28. April 2004, 21:26

So, nun bin auch ich endlich fertig und muss mich tausendmal bedanken. Kann mir jemand mal ein Buch empfehlen, so das ich einen Preloader irgendwann mal selber erstellen kann ?
Habe die Bücher Flash pro 1&2 und 3&4 von Gallileo Desing bekommen. Kennt die jemand vieleicht???
Signatur von »finny« Flashmäßig begeistert aber immer noch zu unwissend...

16

Mittwoch, 28. April 2004, 21:37

Bücher sind sicher gut und schön und nützlich ... aber aus eigener Erfahrung kann ich sagen: Probieren geht über Studieren. Also ich hab zumindest kein Buch ... mir reicht eigentlich die mitgelieferte Hilfe von FLASH :]
Signatur von »TheNobody Style«

17

Mittwoch, 28. April 2004, 22:26

So geht's mir auch...

Die Online-Hilfe von Flash und natürlich die größte Wissensquelle der Welt: Das Web!

Und außerdem gibt's ja dieses Forum... ;)

Neugierde und Wissensdurst ist eigentlich alles, was Du brauchst.
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

18

Sonntag, 7. November 2004, 10:37

Hallo NG,

Ich habe mir auch mal den Preloader, angesehen, und brauche aber sowas ähnliches.

der code:

bytes_gesamt = _root.getBytesTotal() add " Bytes gesamt";
bytes_geladen = _root.getBytesLoaded() add " Bytes geladen";
prozent = int(_root.getBytesLoaded()*100/_root.getBytesTotal()) add " Prozent";
if (prozent == "100 Prozent") {
gotoAndPlay (3);
}


kann ich nicht für bytes_gesamt, ein Schlüsselbild in einer Scene deklarieren?

wie würde das dann aussehen?

Ich möchte meinen Film, mit 2 Preloader, versehen, einen, wo erst der Sound abgespielt, wird (nach dem laden) und dann der zweite, der dann den rest lädt.


Gruß
Wasabi

19

Sonntag, 7. November 2004, 18:47

Hallo Wasabi!

(Wenn ich Deinen Nickname lese, kriege ich Hunger... ;) )

Mit zwei Preloadern in einer Datei haut das ganze nicht hin, denn bereits der erste lädt alle innerhalb der Flash-Datei verwendeten Komponenten. Man kann nicht hingehen und sagen, dass Preloader 1 dies und das und Preloader 2 dann jenes laden soll. Aber mit einem kleinen Trick funktioniert es doch...

1. Erstelle einen Film, welcher nur drei Frames enthält.

2. In die ersten beiden Frames kommt der Preloader.

3. In den dritten Frame kommt:

a) eine Stop();-Anweisung ins Schlüsselbild
b) der Sound, der nach dem Laden des "ersten" Preloaders abgespielt werden soll
c) einen leeren MovieClip, welcher in der linken oberen Ecke der Bühne plaziert wird.

4. Diesem MovieClip (im folgenden kurz MC) gibst Du einen Instanznamen, z.B. "container"

5. Nun erstellst Du eine neue Flash-Datei, welche genau so groß ist und mit der gleichen Geschwindigkeit läuft, wie der erste (nennen wir die erste Flash-Datei einfach "Sound-Datei" und den zweiten "Inhalts-Datei").

6. Diese Datei bekommt ebenfalls einen Preloader spendiert und dann den restlichen Inhalt. Diese Datei veröffentlichst Du z.B. als "inhalt.swf".

7. Im dritten Schlüsselbild der ersten Datei (Sound-Datei) schreibst Du nun zusätzlich zum stop(); in die nächste Zeile loadMovie("der_pfad/inhalt.swf", "container");

Dadurch wird die Datei mit dem Inhalt in den leeren MC geladen, welchen Du zuvor angelegt hast. Dadurch erscheinen beide Filme nach Außen als ein ganzes, aber mit zwei Preloadern.

Alles klar, soweit? ;)

Worauf Du aber unbedingt achten musst ist, wenn Du im eigentlichen Inhalt irgendwelche MCs, z.B. für die Wiedergabesteuerung, ansprechen willst, muss der Container berücksichtigt werden.

Ein Beispiel:

Soll z.B. ein MC mit dem Instanznamen "irgendwas" angesprochen und abgespielt werden, heißt das ActionScript eigentlich:

_root.irgendwas.play();

Jetzt muss es aber heißen:

_root.container.irgendwas.play();


Wenn Du noch Fragen hast, zögere nicht, sie zu stellen... ;)

Grüße,

LapisInfernalis
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)