Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-06-2004, 15:29   #1 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
Red face Navigation > Performance Probleme

hallo!

ich hab eine nette navigation gemacht, doch dummerweise ist mir dann beim veröffentlichen aufgefallen, dass irgendwas nicht stimmen kann.

in der flash voransicht passt das ding, sobald ich allerdings im browser die navi mir anschaue, ist die performance unter jeder sau - viel langsamer als es eigentlich sein sollte.

jetzt hab ich mir gedacht, dass es wahrscheinlich an der setInterval Anweisung (die jede millisekunde aufgerufen wird) liegen könnte und hab mal versucht, als wert für den aufruf 10 millisekunden anzugeben. hat leider auch nichts gebracht...

jetzt bin ich mit meinem latein am ende, wäre euch echt dankbar wenn ihr mir helfen könntet.

* selector_mc ist ne art kasten, der immer über dem aktuellen menüpunkt steht und sich zu dem gewünschten menüpunkt bewegt, wenn man drüber fährt.
* steps_num ist quasi die anzahl der pixel, um die der selector verschoben werden muss.
* target4_num ist die voreingestellte position des selectors wenn man über dem 4ten menüpunkt ist.


PHP-Code:
 this.menupoint4_btn.onRollOver = function () {
        
_global.count_num 1;
        var 
xPos_num _root.selector_mc._x;
        var 
steps_num = (_root.target4_num xPos_num);

        if ( 
steps_num != ) {
            
sid setInterval(moveSelector1steps_num);
        }
    }

function 
moveSelector(steps_num) {
        
        if ( 
count_num >= Math.abs(steps_num) ) {
            
clearInterval(sid);
            
count_num 0;
            
delete steps_num;
            
updateAfterEvent();
            return;
         }
         
        else {
            if ( 
steps_num ) {
                
_root.selector_mc._x -= 1;
            }
            else if ( 
steps_num ) {
                
_root.selector_mc._x += 1;
            }
            
count_num++;
        }

danke im voraus für eure hilfe!
lg martin
jaygroove ist offline   Mit Zitat antworten
Alt 07-06-2004, 16:37   #2 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
tja - sieht so aus als kann sich das keiner vorstellen?!
ich geb mal die .fla datei dazu, hoffe ihr findet euch zurecht...

irgendwer wird sich doch finden, der mir eine antwort geben kann?
Angehängte Dateien
Dateityp: zip flash-navi.zip (15,9 KB, 6x aufgerufen)
jaygroove ist offline   Mit Zitat antworten
Alt 08-06-2004, 10:56   #3 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
das kann ja nicht sein, dass mir da niemand helfen kann!?
ich komm da echt nicht weiter, würde allzu gerne wissen, was ich falsch gemacht habe

BITTTTTEEEEEEEE!!
jaygroove ist offline   Mit Zitat antworten
Alt 08-06-2004, 11:11   #4 (permalink)
zzzZZZzzz...
 
Benutzerbild von Mick
 
Registriert seit: Jun 2001
Ort: Heidelberg
Beiträge: 803
Also ich kann keine Performance Unterschiede zwischen Testumgebung und Browser feststellen

Ehrlich gesagt, ist das Script aber "heavy overdosed" ... das ganze könnte um einiges einfacher (und auch flexibler) gestaltet werden. Bist du interessiert?
__________________
www.mediaszenario.de
Mick ist offline   Mit Zitat antworten
Alt 08-06-2004, 11:19   #5 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
tipps? ja bitte - immer gerne!
du merkst keinen unterschied? bei mir seltsamerweise schon...

ich poste das file nochmal neu und zwar mit dem 1ms-Intervall - da fällt der Unterschied besser auf.

ich hab flash mx 2004 und ie 6.0 bzw. mozilla 1.6 - überall das selbe...
Angehängte Dateien
Dateityp: zip flash-navi.zip (33,2 KB, 5x aufgerufen)

Geändert von jaygroove (08-06-2004 um 11:34 Uhr)
jaygroove ist offline   Mit Zitat antworten
Alt 08-06-2004, 11:38   #6 (permalink)
zzzZZZzzz...
 
Benutzerbild von Mick
 
Registriert seit: Jun 2001
Ort: Heidelberg
Beiträge: 803
Der ganze Code, der im MC 'navipoints_mc' steht könnte auch so lauten:
Code:
myPageArray = ["a", "b", "c", "d", "e"];
speed = 2;
moveNavi = function(targetX) {
	_root.selector_mc.onEnterFrame = function() {
		if(Math.abs(targetX - Math.round(this._x)) < speed) {
			this._x = targetX;
			this.onEnterFrame = undefined;
		} else if(targetX > Math.round(this._x)) this._x += speed;
		else if(targetX < Math.round(this._x)) this._x -= speed;
	}
}

for(i=1;i<=5;i++) {
	this["menupoint" + i +"_btn"].onRollOver = function () {
		moveNavi(Math.round(this._parent._x + this._x));
	}
	this["menupoint" + i +"_btn"].onRollOut = function () {
		_root.selector_mc.onEnterFrame = undefined;
	}
	this["menupoint" + i +"_btn"].onRelease = function () {
		temp = "&page=" + myPageArray[i-1];
		getURL("start.php?typ="+typ+temp, "_self");
	}
}
Wenn du die moveNavi Funktion so umschreibst:
Code:
moveNavi = function(targetX) {
	_root.selector_mc.onEnterFrame = function() {
		if(Math.abs(targetX - Math.round(this._x)) > 1)  this._x += (targetX - this._x)/10;
		else this.onEnterFrame = undefined;
	}
}
hast du noch einen netten Abbrems-Effekt. Vielleicht gefällt er dir ja ...
__________________
www.mediaszenario.de
Mick ist offline   Mit Zitat antworten
Alt 08-06-2004, 12:56   #7 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
werd mir das teil gleich mal im detail anschauen!
danke für die mühe, geb dir nachher bescheid wie ich damit zurecht komme!
jaygroove ist offline   Mit Zitat antworten
Alt 08-06-2004, 14:20   #8 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
so, jetzt hab ichs nach deiner vorlage umprogrammiert und bin mit dem resultat mehr als zufrieden!

äußerst schöne lösung, gefällt mir. danke für deine mühe!

ich hab's mir im nachhinein eh fast gedacht, dass da setInterval gar nicht mal so angebracht ist - du hast mich grad davon überzeugt ;-)

noch eine kleine frage:
sprichst du elemente immer im array an?
ich meine: this["menupoint"+i+"_btn"]
oder nur wenn man den namen des elements noch zusammensetzen muß?
jaygroove ist offline   Mit Zitat antworten
Alt 08-06-2004, 14:35   #9 (permalink)
zzzZZZzzz...
 
Benutzerbild von Mick
 
Registriert seit: Jun 2001
Ort: Heidelberg
Beiträge: 803
Nee ... wirklich nur, wenn es nötig ist. Sonst nehme ich den "direkten" Weg.
Freut mich, dass dir die Lösung gefällt.
__________________
www.mediaszenario.de
Mick ist offline   Mit Zitat antworten
Alt 09-06-2004, 11:00   #10 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
tja, ein problem gibts da jetzt doch noch:

wenn man mit der for schleife die button aktionen generiert, funktioniert
myPageArray[i-1]
nicht...

mit trace hab ich schon versucht, das problem zu ergründen:
der Array ist zwar da, aber i-1 ergibt dann immer den wert 5

wie kann man das problem umgehen, bzw. warum kommt dies zustande?
jaygroove ist offline   Mit Zitat antworten
Alt 09-06-2004, 11:11   #11 (permalink)
zzzZZZzzz...
 
Benutzerbild von Mick
 
Registriert seit: Jun 2001
Ort: Heidelberg
Beiträge: 803
Gibst du den trace-Befehl in der Schleife oder erst danach?
__________________
www.mediaszenario.de
Mick ist offline   Mit Zitat antworten
Alt 09-06-2004, 11:43   #12 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
in der schleife bei onRelease...
aber er wird nicht ausgeführt sondern erst dann, wenn man draufklickt
auf jeden fall funktioniert es nicht, i wird nicht richtig eingesetzt

irgendeine idee wieso?
jaygroove ist offline   Mit Zitat antworten
Alt 09-06-2004, 11:52   #13 (permalink)
zzzZZZzzz...
 
Benutzerbild von Mick
 
Registriert seit: Jun 2001
Ort: Heidelberg
Beiträge: 803
O.K. hier ist der Fehler:
Code:
for(i=1;i<=5;i++) {
	trace(i); //richtig
	this["menupoint" + i +"_btn"].onRollOver = function () {
		moveNavi(Math.round(this._parent._x + this._x));
	}
	this["menupoint" + i +"_btn"].onRollOut = function () {
		_root.selector_mc.onEnterFrame = undefined;
	}
	this["menupoint" + i +"_btn"].onRelease = function () {
		trace(i); //falsch
		temp = "&page=" + myPageArray[i-1];
		getURL("start.php?typ="+typ+temp, "_self");
	}
}
Also wird i schon richtig gesetzt. Das löst natürlich nicht das Problem. Folgender Code sollte dieses jedoch:
Code:
for(i=1;i<=5;i++) {
	this["menupoint" + i +"_btn"].onRollOver = function () {
		moveNavi(Math.round(this._parent._x + this._x));
	}
	this["menupoint" + i +"_btn"].onRollOut = function () {
		_root.selector_mc.onEnterFrame = undefined;
	}
	this["menupoint" + i +"_btn"].temp = "&page=" + myPageArray[i-1];
	this["menupoint" + i +"_btn"].onRelease = function () {
		getURL("start.php?typ="+typ+this.temp, "_self");
	}
}
Sorrich, war mein Fehler. Hoffe, jetzt klappt's!
__________________
www.mediaszenario.de
Mick ist offline   Mit Zitat antworten
Alt 09-06-2004, 11:57   #14 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
suuuper, danke!

doch ich versteh nicht ganz wieso es nur auf diese art funktioniert
kannst mir den grund erklären? wär lässig...

grüsse, martin
jaygroove ist offline   Mit Zitat antworten
Alt 09-06-2004, 12:08   #15 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
zu schnell nachgefragt, jetzt isses mir glaub ich klar:

deswegen weil man jetzt für jeden menüpunkt eine variable definiert hat und nun auch darauf zugreifen kann - vorher wurde die variable erst bei onRelease erzeugt und da wars dann auch schon zu spät.

richtig verstanden?
jaygroove ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele