Tobias Menzel
Erfahrenes Mitglied
Wie wartest Du denn auf das Laden der Dateien?
Poste wenn möglich mal Deine Datei!
Gruß
.
Poste wenn möglich mal Deine Datei!
Gruß
.
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
/*********************
* Variablen *
**********************/
// Bilder laden //
bild = new Array();
bild[0] = "bild1.jpg";
bild[1] = "bild2.jpg";
bild[2] = "bild3.jpg";
// Anzahl der Bilder //
anzahl = bild.length;
// Zähler für die Bilder //
var current = anzahl-1;
// Maximalgrößen //
var maxw = this._height - 10;
var maxh = this._width - 10;
var cx = this._width / 2;
var cy = this._height / 2;
/*********************
* Funktionen *
**********************/
// Fade in funktion //
function fadein(mc) {
// Alpha erhöhen //
if(mc._alpha < 100) {
mc._alpha += 1;
}
// Fade in beenden //
else {
mc._alpha = 100;
clearInterval(fade_in);
}
}
// Fade out funktion //
function fadeout(mc) {
// Alpha erhöhen //
if(mc._alpha > 0 ) {
mc._alpha -= 1;
}
// Fade in beenden //
else {
mc._alpha = 0;
clearInterval(fade_out);
}
}
function animation() {
// Vorheriges bild ausblenden //
fade_out = setInterval(fadeout, 10, _root["bilder" + current]);
// ID des nächsten Bildes //
naechtes = current+1;
// Wenn die ID nicht vorhanden ist (über der Anzahl der bilder) //
if (naechtes >= bild.length) {
// Ist das nächste wieder die ID 0 //
naechtes = 0;
}
// Das nächste bild einfaden //
fade_in = setInterval(fadein, 10, _root["bilder" + naechtes]);
// Zähler hochzählen //
current++;
// Zähler über der Anzahl der Bilder //
if (current >= bild.length) {
// ist der Zähler 0 //
current = 0;
}
}
/*********************
* Hauptprogramm *
**********************/
// Movieclips erstellen //
for(var i = 0; i<anzahl; i++) {
this.createEmptyMovieClip("bilder" + i, i);
this["bilder" + i].loadMovie(bild[i]);
this["bilder" + i]._alpha = 0;
}
// Größen anpassen und Bilder ausrichten //
for(var i = 0; i<anzahl; i++) {
r = this["bilder" + i]._width / this["bilder" + i]._height;
hr = this["bilder" + i]._width / maxw;
vr = this["bilder" + i]._height / maxh;
if (hr > vr) {
this["bilder" + i]._width = maxw;
this["bilder" + i]._height = mc._width / r;
}
else {
this["bilder" + i]._height = maxh;
this["bilder" + i]._width = mc._height * r;
}
this["bilder" + i]._x = cx - this["bilder" + i]._width / 2;
this["bilder" + i]._y = cy - this["bilder" + i]._height / 2;
}
// 1.. Aufruf //
animation();
// Slideshow starten //
fade = setInterval(animation, 5000);
Wo, bitte, wartest Du denn da auf das Laden der Bilder? Direkt nach der loadMovie-Aktion versuchst Du, die Maße abzufragen. Du musst z.B. mit einer onEnterFrfame-Methode, die den MC mit getBytesLoaded oder den _width- und _height-Eigenschaften abfragt, so lange warten, bis diese Werte zur Verfügung stehen.Code:... for(var i = 0; i<anzahl; i++) { this.createEmptyMovieClip("bilder" + i, i); this["bilder" + i].loadMovie(bild[i]); this["bilder" + i]._alpha = 0; } // Größen anpassen und Bilder ausrichten // for(var i = 0; i<anzahl; i++) { r = this["bilder" + i]._width / this["bilder" + i]._height; hr = this["bilder" + i]._width / maxw; vr = this["bilder" + i]._height / maxh; ...
/*********************
* Variablen *
**********************/
// Bilder laden //
bild = new Array();
bild[0] = "bild1.jpg";
bild[1] = "bild2.jpg";
bild[2] = "bild3.jpg";
// Anzahl der Bilder //
anzahl = bild.length;
// Zähler für die Bilder //
var current = anzahl-1;
var zaehler = 0;
// Maximalgrößen //
var maxw = this._height - 10;
var maxh = this._width - 10;
var cx = this._width / 2;
var cy = this._height / 2;
/*********************
* Funktionen *
**********************/
// Fade in funktion //
function fadein(mc) {
// Alpha erhöhen //
if(mc._alpha < 100) {
mc._alpha += 1;
}
// Fade in beenden //
else {
mc._alpha = 100;
clearInterval(fade_in);
}
}
// Fade out funktion //
function fadeout(mc) {
// Alpha erhöhen //
if(mc._alpha > 0 ) {
mc._alpha -= 1;
}
// Fade in beenden //
else {
mc._alpha = 0;
clearInterval(fade_out);
}
}
function animation() {
// Vorheriges bild ausblenden //
fade_out = setInterval(fadeout, 7, _root["bilder" + current]);
// ID des nächsten Bildes //
naechtes = current+1;
// Wenn die ID nicht vorhanden ist (über der Anzahl der bilder) //
if (naechtes >= bild.length) {
// Ist das nächste wieder die ID 0 //
naechtes = 0;
}
// Das nächste bild einfaden //
fade_in = setInterval(fadein, 12, _root["bilder" + naechtes]);
// Zähler hochzählen //
current++;
// Zähler über der Anzahl der Bilder //
if (current >= bild.length) {
// ist der Zähler 0 //
current = 0;
}
}
function check_Loaded() {
for(var i=0; i<anzahl; i++) {
trace(_root["bilder" + i].getBytesLoaded() + " / " + _root["bilder" + i].getBytesTotal());
if((_root["bilder" + i].getBytesTotal() == _root["bilder" + i].getBytesLoaded()) && _root["bilder" + i].getBytesTotal() > 0) {
zaehler += 1;
trace(zaehler);
}
if(zaehler == anzahl) {
// Interval löschen //
clearInterval(checkLoaded);
// 1. Aufruf //
animation();
// Slideshow starten //
fade = setInterval(animation, 5000);
}
}
}
/*********************
* Hauptprogramm *
**********************/
// Movieclips erstellen //
for(var i = 0; i<anzahl; i++) {
this.createEmptyMovieClip("bilder" + i, i);
this["bilder" + i].loadMovie(bild[i]);
this["bilder" + i]._alpha = 0;
}
checkLoaded = setInterval(check_Loaded, 10);
Tobias Menzel hat gesagt.:Hi,
ich würde es folgendermaßen angehen:
Gruß
- Erstelle einen MovieClip als Bildcontainer, der die Methode zum Vorladen und Skalieren der Bilder selbst mitbringt.
- Die Bilder selber werden dann in einen weiteren (leeren) Container innerhalb dieses MC geladen
- Was Du auf der Hauptzeitleiste machst, wäre dann folgendes:
- Instanziere n Exemplare des Container-Clips und weise ihnen jeweils einen Pfad zu dem entsprechenden Bild zu
- Die Container warten per onEnterFrame bzw. setInterval darauf, dass ihnen ein Pfad zugewiesen sind, laden dann das Bild und skalieren es, sobald die _width- und _height-Eigenschaften des inneren Containers nicht mehr 0 sind. Die Container können sich mit _visible = false bis zu diesem Zeitpunkt selbst unsichtbar halten.
- Das Ein- und Ausfaden löst Du dann wie bisher, indem Du die einzelnen Container gegeneinander blendest.
.
this._visible = false;
this.onEnterFrame = function() {
if (_image != undefined) {
pic_container.loadMovie(_image);
preload();
}
}
function preload() {
this.onEnterFrame = function() {
var max = pic_container.getBytesLoaded();
var max = pic_container.getBytesTotal();
// usw. Vorladen und dann anzeigen ;)
var bilder = new Array("images/pic1.jpg", "images/pic2.jpg");
var picture = new Array();
for (var i=0; i<bilder.length; i++) {
picture[i] = this.attachMovie("container", "ct" + i, i);
picture[i]._image = bilder[i];
}
this._visible = false;
this.onEnterFrame = function() {
if (_image != undefined) {
// Bild laden
pic_container.loadMovie(_image);
preload();
}
}
function preload() {
// neue onEnterFrame-Methode definieren:
this.onEnterFrame = function() {
var geladen = pic_container.getBytesLoaded();
var zuladen = pic_container.getBytesTotal();
if (geladen > 0 && zuladen > 0) {
var prozent = geladen * 100 / zuladen;
trace(geladen + " / " + zuladen + " -> " + prozent + "%");
if (prozent >= 100) {
// warum einen neuen Clip mit dem Bild erstellen,
// wenn ich diesen einfach anzeigen kann?
this._visible = true;
}
}
}
}