Problem: CPU auslastung bei Page/Soundstream im Keller - warum ?

Klopfdreh

Mitglied
Hallo erstmal!
Auf meiner Seite: www.klopfdreh(de.vu) (bei URL angabe wurde das de.vu. verschluckt) , habe ich mich mal so richtig mit Flash ausgetobt um einfach mal zu gucken wie ich eine komplette Page realisiere.

Die Seite funktioniert soweit sehr gut, bis auf wenn ich z.B. die Kategorie "Sets" öffne und dann den Stream anwähle. Hierbei bin ich wiefolgt vorgegangen:
Code:
meinSound = new Sound();
meinSound.loadSound(<Dateinamen>,<Streammodus an/aus>);
Ich habe den Streammodus auf true gesetzt, es wird also permantent vom Server geladen.

Das Problem ist, dass die gesamtperformance der Seite total in den Keller geht und sie tierisch anfängt zu ruckeln.

Bis auf bei den Sternen im Hintergrund führt sonst kein einziger mc eine onEnterFrame
Funktion durch, da ich bei sämtlichen Aktionen, diese immer, wenn ein gewünschter Status erreicht wurde, mit "delete this.onEnterFrame" gelöscht habe.

Ich scaliere die komplette swf Datei in meiner html Datei auf 1,4 fache Größe, vieleicht liegts daran?!

Und wie kann man sonst noch die Performance steigern?!

Ich bin im moment ziehmlich ratlos und hoffe hier eine Antwort zu bekommen.

Vielen Dank im Vorraus!
 
Zuletzt bearbeitet:
hm.. ich kann kein ruckeln feststellen.. alles läuft mit und ohne Stream einwandfrei flüssig...
dabei habe ich nur nen Athlon xp 2600+ (1.9ghz)...
Was die CPU-Auslastung angeht...die finde ich allerdings relativ happig.. bei offenem fenster habe ich zwischen 70 und 80% auslastung..
sobald es geschlossen wird wird es ca halbiert... (30% - 50%)
(ich meine natürlich NICHT mein Zimmerfenster :P )
 
Genau das meine ich ja! Dabei ist das was ich da gemacht hab nur nen bewegungstween und nen form tween in einem movieclip.

Die Ebenenhierarchie sieht folgendermaßen aus:
Hauptbühne , Inhaltbox (hier wird getweent um das Menü aufzuklappen), Inhaltboxscroller (dafür da um die Movieclips drunter her zu bewegen, damit es so aussieht als ob man scrollt und für die Knöpfe zum scrollen), Inhalt (für den eigentlichen Inhalt der Punkte)

Weiter hab ich nicht mehr da drin :(

Was zum Teufel mach ich denn da falsch? - Gibt es irgend ne Regel wie tief man schachteln sollte oder so ?
 
Zuletzt bearbeitet:
Ich hab herausgefunden, dass dieser Performanceverlust von den Sternen her stammt. mein quellcode sieht dazu folgendermaßen aus:
Code:
blitzinterval = setInterval(flashwaves, 200);
flashintervallwiederholungen = 0;

function flashattach() {
	// Festlegen der Ebene auf der der Flash liegt --------------
	_root.flashebene = Math.round(Math.random()*10000);
	// Flash auf Bühne attachen ---------------------------------
	_root.attachMovie("flashmov", "f"+flashebene, 100+flashebene);
	_root["f"+flashebene]._y = Math.random()*400;
	_root["f"+flashebene]._x = Math.random()*40;
	// Festlegen wie schnell der Flash fliegt. ------------------
	_root.speed = 0;
	while (_root.speed<5) {
		_root.speed = Math.round(Math.random()*11);
	}
	_root["f"+flashebene].speed = _root.speed;
	// Helligkeit des Flashes festlegen
	flashfarbe = new Color(_root["f"+flashebene]);
	if (_root["f"+flashebene].speed>=8) {
		flashfarbe.setRGB(0xc5c5c5);
	} else {
		flashfarbe.setRGB(0x7b7b7b);
	}
	// Flugbahn der Flashes
	_root["f"+flashebene].onEnterFrame = function() {
		if (this._x>550) {
			flashattach();
			removeMovieClip(this);
		} else {
			this._x += this.speed;
		}
	};
}
function flashwaves() {
	if (flashintervallwiederholungen<=12) {
		for (i=0; i<_root.blitzanzahl; i++) {
			flashattach();
		}
		flashintervallwiederholungen++;
	} else {
		clearInterval(_root.blitzinterval);
	}
}
Ich erzeuge erst ein Intervall was jede 200 Millisekunden 5 Sterne erzeugt und das 12 mal.
Jeder dieser Sterne hat eine onEnterFrame-Funktion und überprüft ob er am Rand angekommen ist, wenn ja wird ein neuer erstellt. Ich hab meinen Flashfilm so eingestellt das er 24 Bilder in der sekunde hat, was bedeutet 60*24 = 1440 überprüfungen in der Sekunde!! Wie kann ich hier geschickter vorgehen?! :eek:

Vielen Dank im vorraus und für die schnelle Antwort über den Performancecheck.
 
Hi,

na ja, ich sags mal so: viele "Sterne" bei Vollbild (bzw. 1.4facher Vergrößerung) können dem Prozessor schon mal einiges abfordern - obwohl die Seite hier (P4 2.8 GHz) nie mit mehr als 15-18% Auslastung läuft.

Ich habe Deinen Code jetzt nicht komplett analysiert, aber probier mal, am Anfang eine konstante Anzahl Sterne zu instanzieren, und in der onEnterFrame-Methode - wenn sie den Rand erreichen - ihre Position wieder auf links zu setzen, statt den Clip zu löschen und eine neue Instanz zu erstellen. Ansonsten: Weniger Sterne verwenden. ;)

Gruß
.
 
Mh - also ich hab jetzt statt des removen des alten / neuinstanziieren des neuen Clips die y und x Werte verändert, dennoch bleibt der Erfolg aus. Es sind ja konstant 60 Sterne auf der Hauptbühne. Ich werd einfach dann mal die Anzahl der Sterne etwas herabsetzen, obwohl ichs schade finde auf nochmehr Sterne zu verzichten :( - Gibts denn nicht noch eine andere Möglichkeit ?
 
Mhhh , sehr merkwürdig .... Ich habe jetzt mal eine Testreihe gestartet .. und die Konstanzte der Sterne am Anfang auf 2 gesetzt. Damit sind das bei 12 Intervallen 24 Sterne. Die Prozessor last ist von 29 auf 25% runter. Ist ja nicht besonders viel weniger. Kann es auch an den Ebenen liegen ? Wenn ich z.B. ne Ebene auf 5000 setze, das dies mehr Performance kostet als wenn ich sie auf 100 lege ? Die Performance geht anscheinend ziehmlich stark in den Keller wenn ich das Menü öffne und die Sterne da drunter her laufen.
 
Wenn ich z.B. ne Ebene auf 5000 setze, das dies mehr Performance kostet als wenn ich sie auf 100 lege ?
Nein, das hat keine Auswirkung auf die Performance.

Was Leistung benötigt ist das ständige Neuzeichnen sich überlappender Elemente, wie es bei diesem Menü der Fall ist.

Probier spaßeshalber mal, den Film unskaliert (sprich: mit 100%) in die Seite einzubetten - Erfahrungsgemäß steigt die benötigte Rechenleistung bei skalierten Filmen etwas.

Gruß
.
 
Habe ich auch schon probiert! - die Testreihe habe ich mit unskaliertem Film durchgeführt!
Der Performanceunterschied zum skalierten ist nicht sonderlich viel. Hab jetzt hier ne Menge rumversucht - jedoch ohne erfolg!

Vielen Dank fürs schnelle Antworten.
 
Zurück