Dynamische Animation

Mayday171

Erfahrenes Mitglied
Hallo,

Ich habe mehrere Bilder die ich hintereinander ablaufen lassen möchte.
Möchte das jedoch dynamisch machen.

Bis jetzt bin ich soweit:

PHP:
i=2;
this.createEmptyMovieClip("bild",1);
bild._x=0;
bild._y=157;


onEnterFrame=function() {
    if(i!=36) {
    
        if(i>=10) {
            loadMovie("render00"+i+".jpg",this["bild"+i]);
        }
        else {
            loadMovie("render000"+i+".jpg",this["bild"+i]);
        }
        i++;
    }
    
}

leider zeigt er mir immer nur das letzte Bild an.
Was mach ich falsch
Ich hab die fps auf 10. Ist das noch zu schnell?

Danke!!

MfG
 
Hi,

sollen die Bilder nur nacheinander (im Takt der Framerate) angezeigt werden, oder gleichzeitig (nebeneinander) zu sehen sein?

Probiers so:
Code:
var img = new Array(36);

for (var i=0; i<img.length; i++) {
    img[i] = this.createEmptyMovieClip("img" + i, i);
    img[i]._x = pic_x;
    img[i]._y = pic_y;
    img[i]._visible = false;
    var ct = img[i].createEmptyMovieClip("ct", 1);
    var str = i.toString();
    while(str.length < 4) { str = "0" + str; }
    ct.loadMovie("render" + str + ".jpg");
}

function abspielen() {
    var c = -1;
    this.onEnterFrame = function() {
        img[ c]._visible = false;
        c ++;
        img[ c]._visible = true;
        if (c >= img.length) delete this.onEnterFrame;
    }
}

Normalerweise müsstest Du natürlich darauf warten, bis alle Bilder komplett geladen sind (was im Web eine Weile dauern dürfte). Daher solltest Du die Funktion "abspielen" erst entsprechend verzögert aufrufen.

Gruß
.
 
funktioniert auch nicht!!
Die Bilder sollen nacheinander angezeigt werden.
Hatte das ganze vorher in der Zeitleiste. D.h. jedes einzelne Bild (35 Bilder) war auf ein Frame in der Zeitleiste. Waren dann eben 35 Frames auf der Zeitleiste. Ist doch das selbe wie ich es machen indem ich es in eine onEnterFrame methode schreibe oder nicht ?

MfG
 
funktioniert auch nicht!!
Nun ja, kann auch nicht, da mein Code keine komplette Lösung, sondern einen Denkanstoß darstellt (die Funktion "abspielen" wird z.B. nicht aufgerufen). ;)

Wenn die Bilder schnell "geladen" werden sollen, würde ich sie nicht per loadMovie laden, sondern in die Bibliothek aufnehmen und per attachMovie auf die Bühne holen. Ob Du einen externen Preloader für viele Bilder oder einen internen für den dann größeren Hauptfilm verwendest, bleibt sich in diesem Fall gleich.

Gruß
.
 
Ob Du einen externen Preloader für viele Bilder oder einen internen für den dann größeren Hauptfilm verwendest, bleibt sich in diesem Fall gleich.

eben nicht! ICh möchte die eine Flash bzw. swf Datei benutzen um verschiedene Animationen abzuspielen, je nachdem welcher Pfad in einer externen XML datei angegeben wird.
Brauche also die externen Dateien.


die Funktion "abspielen" wird z.B. nicht aufgerufen)

Hab ich ja auch gemacht. Gleich am Anfang im Root, zu testzwecken.

MfG
 
Zuletzt bearbeitet:
Hab ich ja auch gemacht. Gleich am Anfang im Root, zu testzwecken.
Ok, aber auch das wird nichts bringen, so lange nicht alle Bilder vorher komplett geladen worden sind. Probiers mal so:
Code:
var img = new Array(3);

var current = 0;

for (var i=0; i<img.length; i++) {
    img[i] = this.createEmptyMovieClip("img" + i, i);
    img[i]._x = pic_x;
    img[i]._y = pic_y;
    img[i]._visible = false;
    var ct = img[i].createEmptyMovieClip("ct", 1);
    var str = (i + 1).toString();
    while(str.length < 4) { str = "0" + str; }
    ct.loadMovie("render" + str + ".jpg");
	img[i].onEnterFrame = function() {
		if (this["ct"]._width > 0 && this["ct"]._height > 0) {
			nextOne();
			delete this.onEnterFrame;
		}
	}
}

function nextOne() {
	current ++;
	if (current >= img.length) abspielen();
}

function abspielen() {
    var c = -1;
    this.onEnterFrame = function() {
        img[ c]._visible = false;
        c ++;
        img[ c]._visible = true;
        if (c >= img.length) delete this.onEnterFrame;
    }
}

Gruß
.
 
Zurück