Willkommen im TP-Hilfe-Forum! Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst.
Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team.
heute hab ich ein Problem mit meiner Galerie. Ich habe eine Galerie, in dem Bilder dyn. geladen werden. Ich bau dieses swf allerdings später in eine HTML.Seite mittels Dreamweaver ein. Deshalb wollte ich lieber einen Preloader mit integrieren. Leider fängt der Film an zu loopen (?), wenn ich ihn teste. Es kommt auch keine Meldung. Weiß nicht woran das liegen kann, bzw wie es eleganter zu lösen ist. Ich denke besser wär auch die Bilder ebenfalls mit einen dyn. Preloader zu versehen, oder?
(Übrigens, ohne Preloader funktionierts einwandfrei)
Also: Preloading Gallery.swf, dann jeweils die Bilder (Durchnittsgröße ca. 22KB. Soll später ca. 80 Bilder beeinhalten)
// directory ist das Verzeichnis, in dem sich die Bilder befinden.
var directory = "bilder/";
// files_array ist ein Feld (Array), das die Dateinamen erhalten soll.
var files_array = new Array();
// title_array ist ein Feld (Array), das die Bildtitel erhalten soll.
var title_array = new Array();
// bildNr ist der Index in files_array des aktuellen Bildes
var bildNr = 0;
// Variablen aus der Textdatei laden
// Flash MX-Vorgehensweise mit LoadVars()-Objekt
theVars=new LoadVars();
// onLoad wird aufgerufen, sobald die Variablen (Dateinamen)
// aus der Textdatei geladen wurden
theVars.onLoad = function()
{
// In der Textdatei sind die Dateinamen in der Variablen files
// durch Kommata getrennt gespeichert.
// Mit split() werden die Dateinamen zwischen den Kommata
// in das Feld files_array geschrieben.
files_array = this.files.split(",");
// Für die Titel läuft das genauso:
title_array = this.titel.split(",");
// Falls mindestens ein Dateiname gespeichert wurde,
// wird das erste Bild in den leeren Movieclip bild_mc
// geladen.
if (files_array.length>0)
{
bild_mc.loadMovie(directory + files_array[bildNr]);
// Text für den Bildtitel setzen
Titel_txt.text = title_array[bildNr];
}
};
// Nach der Initialisierung des theVars-Objekt (oben)
// wird die Textdatei geladen:
theVars.load("bilder.txt");
Falls relevant, hier der AS für die Buttons
Code:
// Ereignis-Handler für das Drücken des next-Buttons
next_btn.onRelease = function()
{
// Falls das aktuelle Bild noch nicht das Letzte ist...
if (bildNr < (files_array.length-1))
{
// bildNr um eins erhöhen
bildNr++;
// neues Bild in MovieClip bild_mc laden
bild_mc.loadMovie(directory + files_array[bildNr]);
// Text für den Bildtitel setzen
Titel_txt.text = title_array[bildNr];
}
}
// Ereignis-Handler für das Drücken des prev-Buttons
prev_btn.onRelease = function()
{
// Falls das aktuelle Bild noch nicht das Erste ist...
if (bildNr > 0)
{
bildNr--;
bild_mc.loadMovie(directory + files_array[bildNr]);
// Text für den Bildtitel setzen
Titel_txt.text = title_array[bildNr];
}
}
Hoffe da blickt einer durch. Vielleicht hat ja jemand nen guten Rat hierzu
der jason
Geändert von jason voorhees (31.07.2005 um 00:34 Uhr).
Erstmal sehe ich da kein Stop. Die fla wäre bestimmt hilfreicher...
weiterhin, was soll der Preloader? Der läd nur den Film an sich, ext. Daten, die dyn. geladen werden, werden so nicht bedacht.
Schau Dir dazu am besten mal folgendes an: Total Preloader MX 2004 by flashstar
nun, der Preloader soll auch ersichtlich machen das etwas geladen wird. Da das "Galerie-swf" später mit Dreamweaver in eine HTML-Seite gebaut wird, dacht ich mir es könnte doch hilfreich sein, wenn da nicht nur ein weißer Kasten zu sehen ist, und plötzlich der Film auftaucht. Oder hab ich da einen Denkfehler? Kurz: Der Container soll inklusive dem ersten Bild geladen werden. Dann wird einfach mit einem vor- und zurück-Button das nächste Bild ausgewählt, ohne Thumbs. Wenn dafür keine Preloader nötig sind, ja um so besser
Du meintest, du siehst keine Stopfunktion. Was genau soll die denn bewirken? Wo soll ich stoppen?
Also, wenn nur ein Bild (Startbild) mit wie von die angegeben ~22KB in dem Movie ist und sonst nur der Code, sollte die swf recht klein sein... ob da ein reloader von nöten ist?
IMHO nicht.
Zum Stop...
Du bemängelst doch, dass Du nun in einer Endlosschleife bist:
Zitat:
Leider fängt der Film an zu loopen (?)
Da würde ein Stop schon helfen (auf dem letzten Key).
Oder welchen Loop meinst Du nun?
Für weitere Fragen, poste mal die fla (gezpippt), dann kann man das mal richtig sehen und auch weiterhelfen.
Ich bin mir nicht sicher ob das ein wirklicher Loop ist. Wenn ich den Film mit aktivierten Bandbreiten-Profiler teste und einen Download simuliere, scheint so etwas wie ein "Loop" entstanden zu sein. Bei "Stream" im Profiler sieht es so aus, als ob etwas looped. Und leider wird das erste Bild nicht geladen, was ich jedoch gern hätte. Wenn ich daneben auf das Diagramm gehe und hineinklicke, erscheint das erste Bild und ich kann mit den Buttons navigieren.
Mit dem Stop weiß ich leider noch immer nicht. Der gesamte Film spielt sich in drei Frames ab. Dann noch halt auf verschiedenen Ebenen. Wüsste nicht in welchen Frame ich den Stop setzen soll.
Bist Du ein Fan von Dezentralisierung?
Wieso schreibst Du denn das AS so zerstreut?
Du kannst ruhig alles auf ein Key schreiben....
Na ja, egal.
Schriebe mal in Ebene "as laden" auf den letzten Key, wo nun schon das AS liegt in Zeile39 folgendes:
stop();
"Fan von Dezentralisierung" klingt ja schon fast wie ein Album-Titel...LOL!
Suuuper! Klappt ja wunderbar! Jetzt wo du das FLA kennt, meinst du ich brauch nen Preloader? Oder sonst irgendwelche Anregungen?
Mein AS (Dezentralisiert) kann also in ein Frame geschrieben werden?
Du meinst u.a. bestimmt die "Stage.showMenu = false;" ne? Ja, da wusst ich auch nicht so recht wo die wirkt. Dachte mir dann, wenn man auf den Hintergrund klickt, ist der Befehl aktiv. Jedoch wenn man in das Bild klickt dann nicht....ehrlich gesagt habe ich das einfach ungeprüft gemacht, da es mir kein Aufwand erschien schäm*. Und den Button AS, ist es besser wenn der auch in die AS-Ebene kommt?
hätte noch eine ergänzende Frage zu meinem Album. Wenn ich einen 56k-Download simuliere, dauert es doch einige Zeit, bis Fotos geladen werden. Daher würde ich lieber doch noch Bildpreloader hinzufügen (Innerhalb des Containers). Bei DSL macht es ja eh nix, ob ein Loader da ist oder nicht.
Doch wenn ich schon am Feintuning bin, kann mir einer nen Tipp geben, wo ich das AS ändern muss bzw. was ich z.B für den Bildpreloder einsetzen soll?
Dann wollt ich mal fragen, wie sich das macht, wenn die Bilder einfaden würden? Ist das aufwendig in mein Album zu implementieren?
Feintuning? So so, dann wollen wir da mal ran
Man kann in Flash Grafiken auch komprimieren. Das solltest Du mit den Grafiken in der Bib machen, da sie ja eh nicht qualitativ der Renner sind.
Dazu auf die Grafiken in der Bib mit der rechten Maustaste und auf die Eigenschaften.
Da Änderungen entsprechend des Anhanges vornehmen und dann nochmals Test (Download simulieren).
Ohhhh, was das....
Dann zum Preloader... Du könntest bei jedem Bild weiter, zurück einen machen, also immer für das nächste Bild.
Alle auf einmal preloaden würde ich nicht einbauen.. wenn es ~15 Bilder sind... wie lange soll ein Modem-User warten, bis er das erste sieht?
Also wenn, dann jedes Bild sep. preloaden.
Sliderfunktion ist schon was feines, aber...
Man muss beachten, dass Alpha-Werte sehr auf die Ressourcen gehen und wenn man ca 5-6 Bilder mit _alppha=0 übereinander hat geht nix mehr....
Glaubst nicht? Probier es mal aus
Also muss man die MCs mit den Bildern immer wieder laden... löschen... laden... löschen... usw.
So da ich heute einen guten Tag habe, habe ich Dir mal nen BonBon gebaut.
Ist noch quick&dirty, aber die Funktion ist da.
Also speicher einfach mal die SWF da, wo deine nun liegt, so das auf den Ordner "bilder/" zugegriffen werden kann.
So und dann ordnetlich Code schauen und verstehen
Vielen Dank! Und ist so schön ordentlich dein AS. Werde mal gleich probieren dein AS einzubauen bzw mein Album anzugleichen.
Wegen dem Alpha-Wert. Ich habe mal gelesen, dass es besser sei anstelle der Werte "0" und "100" lieber "1" und "99" zu nehmen, da diese Ressourcenschonender seien.
Zitat:
Du könntest bei jedem Bild weiter, zurück einen machen, also immer für das nächste Bild.
Alle auf einmal preloaden würde ich nicht einbauen..
Nee, das hat ick doch jarnicht vor. Mein Gedanke ist derselbe wie deiner. Mein grundsätzliches Problem ist, dass ich AS noch nicht spreche. D.H. mir fällt es schwer mich in Skripte einzudenken (Aber blöd bin ich trotzdem nicht.. ). Aber ich arbeite dran...
In dem Fall, weiß ich jetzt nicht wo ich ein vorhandenes Imageloader-Script in mein Skript einfügen soll. Ansonsten muss ich im dunkeln stochern
Ne andere Frage ist jetzt, ob das optisch nicht komisch ist, wenn zwischen dem Faden noch ein Ladebalken erscheinen würde? Wenn, dürfte dieser eh nur ein schmaler Strich sein, ganz dezent halt.
Hier habe ich ein Skript. Müsste nur wissen ob es brauchbar für meien Zwecke ist.
Code:
// pfad zu einer externen datei – das kann z.b.
ein pfad zu einer swf, zu einem bild oder einem film sein
var zielfilm = "bild1.jpg";
+++++++++++ der balken +++++++++++
zuerst wird dynamisch ein leerer movieclip erzeugt
in diesem movieclip wird der balken per
flash-drawing-api erzeugt: alpha, farbe, höhe, breite
*/
_root.createEmptyMovieClip("balken_mc",1);
// x-position des balkens
balken_mc._x = startx;
// y-position des balkens
balken_mc._y = starty;
//zeichnen des balkens
with(balken_mc){
beginFill(farbe,alpha);
lineTo(0,hoehe);
lineTo(breite,hoehe);
lineTo(breite,0);
lineTo(0,0);
endFill();
};
/*
++++++++++ die anzeige +++++++++
schleife zur erzeugung der textfelder fuer die
anzeige der kilobytes,
prozent und der zeit
*/
for(var i = 1;i <= 5;i++){
//erzeugt ein textfeld mit der instanz "anzeige+i" an einer
vorgegebenen position
_root.createTextField("anzeige"+i,20+i,startx,starty+(20*i),300,20);
//formatierung der anzeigetexte
anzeigeformat = new TextFormat();
anzeigeformat.color = textfarbe;
anzeigeformat.font = schriftart;
anzeigeformat.size = schriftgroesse;
anzeigeformat.bold = schriftfett;
anzeigeformat.italic = schriftkursiv;
anzeigeformat.underline = schriftunterstrichen;
anzeigeformat.align = textausrichtung;
}
//variablen fuer die anzeige
_root.onEnterFrame = function(){
// gesamtbytes der zu ladenden datei
var t = _root.ziel.getBytesTotal();
// bereits geladene bytes
var g = _root.ziel.getBytesLoaded();
// timer für die zeitanzeige
var st = getTimer();
// rundung der auf gerade zahlenwerte
var rt = Math.round((st-at)/1000);
var et = Math.round((t*rt)/g);
var ct = Math.round(-(rt-et));
// wenn geladene bytes mit gesamtbytes übereinstimmen
if(g == t && g>50){
// werden durch eine schleife alle vorhandenen textfelder gelöscht
for(var i = 1;i <= 5;i++){
_root["anzeige"+i].removeTextField();
}
// der balken wird ebenfalls gelöscht
balken_mc.clear();
// die onEnterFrame-Anweisung wird aus performancegründen auch gelöscht
delete this.onEnterFrame;
}
// wenn geladene bytes mit gesamtbytes nicht übereinstimmen, wird prozentwert des ladefortschritts angezeigt
else {var a = (g/t)*100;
// definition der anzeigefelder (texthäppchen)
anzeige1.text = "Es wurden "+Math.round(g/1024)+" Kb von "+Math.round(t/1024)+" Kb geladen";
anzeige1.setTextFormat(anzeigeformat);
anzeige2.text = "Das sind nach Adam Riese "+Math.round(a)+" %";
anzeige2.setTextFormat(anzeigeformat);
anzeige3.text = "Die abgelaufene Zeit beträgt "+rt+" Sekunden";
anzeige3.setTextFormat(anzeigeformat);
anzeige4.text = "Sie müssen sich noch ca. "+ct+" Sekunden gedulden";
anzeige4.setTextFormat(anzeigeformat);
// balken wird proportional zum prozentwert des ladefortschrittes skaliert
balken_mc._xscale = a;
}
}