schnell in der preview - langsam im browser

harrry

Erfahrenes Mitglied
Hallo,

mein Movie läuft in der Flash-8-Voransicht ("Film testen") munter in der gewünschten Geschwindigkeit (Framerate ist 61), kaum aber bette ich die swf in eine HTML-Seite ein, läuft das Ding um ein gutes Drittel langsamer.

Habe verschiedene Veröffentlichungs-Modi ausprobiert, auch versuchsweise die Browser-Zentrierung und den Hintergrund-Verlauf rausgelöscht, aber das Tempo bleibt empfindlich reduziert. Kennt jemand das Problem?

Habe das Beispiel mal angehängt! Die swf spielt ohne zu verzagen, aber in der HTML-Seite eingebettet wirds ab dem zweiten Klick langsamer und laaangsaaamer....
 

Anhänge

  • 26291attachment.zip
    16,7 KB · Aufrufe: 12
Zuletzt bearbeitet:
Hi,

a) Filme laufen in der Regel im Browser etwas langsamer, als im stand-alone-Player, wenn hohe Frameraten oder aufwändige Animationen verwendet werden.

b) Probier mal, den Film nicht mit 100% der Fenstergröße, sondern in der Größe, die auch die Originalbühne hat, einzubinden. Das dürfte auch noch mal einen kleinen Geschwindigkeitsvorteil bringen.

Gruß
.
 
a) Naja - aber bei dieser Gelegenheit ist der Unterschied schon besonders eklatant. Das ist sonst nicht so arg.

b) Hab ich schon versucht, bringt keine spürbare Verbesserung.

c) Ich glaub, es ist was mit dem Skript, denn es ist schon seltsam, dass die erste Animation im Browser ebenso schnell läuft wie in der Vorschau - und sich erst ab dem zweiten Klick (der ja dieselbe Animation abspielt) die Zähflüssigkeit breitmacht. Das fühlt sich so an, als ob sich irgendeine Schleife aufbaut oder ein onEnterFrame heimlich dupliziert... könntest Du denn, falls es Deine Zeit erlaubt, mal reinsehen?
 
es ist schon seltsam, dass die erste Animation im Browser ebenso schnell läuft wie in der Vorschau - und sich erst ab dem zweiten Klick (der ja dieselbe Animation abspielt) die Zähflüssigkeit breitmacht.
Ist mir nicht aufgefallen.

Zum Script: Das scheint zum einen die Methode "elasticSetTo" von luke zu sein (die eigentlich nichts "aufbauen" dürfte - drübergeschaut habe ich sowieso ;)) - und zum anderen eine simple Zeitleistenanimation. Aufgefallen ist mir nichts; mit Intervallen wird nicht gearbeitet. Vielleicht schaut luke ja noch mal drüber. ;)

Wenn Dir die Aufbauzeit wichtig ist, könntest Du statt onEnterFrame setInterval verwenden; dann dauert die Animation (wenn auch ruckeliger) wenigstens immer gleich lang ...

Gruß
.
 
Mhm, tja. Habe jetzt die Framerate auf 100 erhöht, das sieht auch in der HTML-Umgebung passabel aus. Allerdings - muss ich nun befürchten, dass das nur auf MEINEM Browser gut aussieht und anderswo die Mühlen langsamer mahlen?
 
Hi,

nun, das wird von der Rechenleistung der jeweiligen Systeme abhängen.

Ich würde die Framerate eher veringern und statt dessen z.B. für die Animation 20-ms-Intervalle verwenden.

Gruß
.
 
Hallo,

ich hab da zufälligerweise mal eine Object-Erweiterung mit Intervallen geschrieben, die sich dann natürlich auch für MovieClips brauchen lässt. Werd das gelegentlich mal in die FAQ stellen. Der ms-Parameter steht für die Millisekunden des Intervalls:

Code:
Object.prototype.obj_elasticTo = function(s:Number, e: Number, d:Number, ms: Number):Void {
	//
	if (this.obj_elasticToId) {
		clearInterval(this.obj_elasticToId);
	}
	
	
	var k = 4; 
	var pNr = Math.floor((arguments.length-3)/2);
	var pAll = [];
	//
	for (var i = 0; i < pNr; i++) {
		pAll[i] = {p: arguments[k], t: arguments[k+1], step: 0}
		k += 2;
	}
	//
	var i = d;
	this.executeObj_elasticTo = function() {
		if (i>0) {
			i--;
		} else {
			for (var u = 0; u < pAll.length; u++) { 
				var p = pAll[u].p;
				var t = pAll[u].t;
				var dif = t-this[p];
				pAll[u].step += dif*s;
				pAll[u].step *= e;
				this[p] += pAll[u].step;
				if (this[p] == this[p +"CTRL"]) {
					pAll.splice(u, 1);
					
				} else {
					this[p +"CTRL"] = this[p];
				}
	
			}
			if (pAll.length < 1) {
				clearInterval(this.obj_elasticToId);
			}
		}
	};
	this.obj_elasticToId = setInterval(this, "executeObj_elasticTo", ms);
};

Was die Performance deines Films angeht, kann ich zumindest bezüglich meines Skriptes leider nicht helfen. Da bleibt bestimmt keine Schlaufe hängen. Lass dir sonst mal irgendeine Message beim delete this.onEnterFrame ausgeben.

Ich tipp auch auf eine zu hohe Framerate. Dazu kommt, dass du eine Zeitleisten-Animation während deren Ablaufen mit dem obigen Skript tweenst. Möglich, dass das mit dieser Framerate Probleme gibt.

gruss
 
Vielen Dank für Eure Hilfe,

hab mal versucht, es umzustellen wie vorgeschlagen: spielen tuts zwar schon, aber der Unterschied zwischen Preview-Performance und Browser ist, wenn überhaupt, noch größer geworden.

Bitte seh sich das einer an: dass es im Browser auf den ersten Klick in Originalgeschwindigkeit klappt und erst beim 2. Aufruf der Animation die Verlangsamung eintritt, ist jetzt überdeutlich zu erkennen.
 

Anhänge

  • 26296attachment.zip
    25,5 KB · Aufrufe: 10
Aja - und der Tipp, dass dem Rechner der gleichzeitige Tween zu viel wird, ist sicher richtig: hab die Animation jetzt um ein paar Frames später angesetzt, sodaß sie erst nach dem "elastic"-effekt passiert - jetzt ist die Perfomance besser.
 

Anhänge

  • 26297attachment.zip
    16,7 KB · Aufrufe: 10
... diese "Verlangsamung" resultiert daraus, dass ab dem zweiten Klick immer zwei Felder zeitgleich animiert werden (der bisher aktuelle muss ja wieder verkleinert werden) - beim ersten Klick wird nur ein Feld vergrößert.

Gruß
.
 

Neue Beiträge

Zurück