Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-02-2006, 11:18   #1 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
Question Actionscript für Navi vereinfachen

Guten Mittag liebe Flasher,

Ich habe ein AS für meine Navi, das auch wunderbar funktioniert. Allerdings wird das Script ziemlich lang, wenn ich 6 Buttons habe und nun frage ich mich, ob es eine Möglichkeit gibt, dieses gebastelte Script zu vereinfachen.

PHP-Code:
this.button1_mc.stop();
this.button1_mc.onRollOver = function() {
    
this.onEnterFrame = function() {
        
// : gehe immer ein schritt vor in der Zeitleiste
        
this.nextFrame();
        
// : wenn ende der Zeitlieste erreicht ist halte an
        
if (this._currentframe == this._totalframes) {
            
delete this.onEnterFrame;
        }
    };
};
this.button1_mc.onRollOut = function() {
    
this.onEnterFrame = function() {
        
// : gehe immer ein schritt zurueck in der Zeitleiste
        
this.prevFrame();
        
// : wenn erste Frame ereicht ist hallte die Animation an
        
if (this._currentframe == 1) {
            
delete this.onEnterFrame;
        }
    };
};
this.button1_mc.onRelease = function() {
    
getURL('home.php''content');
}; 
Das ist das Script für einen Button. Kann man nicht einfach sagen, dass Button 1-6 diese Anweisung befolgen sollen?

Vielen Dank für Antworten

Liebe Grüße aus Berlin
__________________
Wie kommt mein Öl unter deinen Boden?
Masterpi ist offline   Mit Zitat antworten
Alt 16-02-2006, 11:24   #2 (permalink)
FlashForRum
 
Benutzerbild von störie
 
Registriert seit: Oct 2004
Ort: börlinn
Beiträge: 583
schleife heisst das zauberwort:
Code:
sites =["home", "contact"];

for(i=1;i<sites._length; i++){
  this["button"+i].onPress = function{
    lalala;
  }
}
__________________
>>Achim Fehltdawas<<
°-°
mySite
myFlash-toons
mySpace
störie ist offline   Mit Zitat antworten
Alt 16-02-2006, 11:29   #3 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
Wie, was, das wars schon? Ich dachte, da ist mehr nötig^^. Ich danke dir vielmals und werde es gleich mal ausprobieren *freu*

Aber eine Frage habe ich noch: Woher weiß das Ding jetzt, dass es die php Seite in den Frame "Content" laden soll?
__________________
Wie kommt mein Öl unter deinen Boden?

Geändert von Masterpi (16-02-2006 um 11:30 Uhr)
Masterpi ist offline   Mit Zitat antworten
Alt 16-02-2006, 11:47   #4 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Du musst schon alle drei Skript anpassen!
Aber anstatt dass du jetzt für jeden Button
PHP-Code:
this.button1.onPress... 
schreibst schreibst du jetzt nur noch:
PHP-Code:
this["button"+i].onPress... 
Die Funktionen musst du selbstverständlich drin haben! Störie hat nur lalala als Platzhalter geschrieben, für was da alles drin stehen kann!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 16-02-2006, 11:54   #5 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
Ja okay, dass das lalala nicht die gewünschte Funktion war, ist mir klar

Mein Script würde jetzt so aussehen:

PHP-Code:
sites =["home""contact"];

for(
i=1;i<sites._lengthi++){
  
this["button"+i].onPress = function{
   
 
this.["button"+i].stop(); 
this.["button"+i].onRollOver = function() { 
    
this.onEnterFrame = function() { 
        
// : gehe immer ein schritt vor in der Zeitleiste 
        
this.nextFrame(); 
        
// : wenn ende der Zeitlieste erreicht ist halte an 
        
if (this._currentframe == this._totalframes) { 
            
delete this.onEnterFrame
        } 
    }; 
}; 
this.["button"+i].onRollOut = function() { 
    
this.onEnterFrame = function() { 
        
// : gehe immer ein schritt zurueck in der Zeitleiste 
        
this.prevFrame(); 
        
// : wenn erste Frame ereicht ist hallte die Animation an 
        
if (this._currentframe == 1) { 
            
delete this.onEnterFrame
        } 
    }; 
}; 
  }

Meine letzte Frage bezog sich auf das hier:

PHP-Code:
sites =["home""contact"]; 
wozu dient das? In dem Script wird doch nirgendswo darauf zurückgegriffen, zumal die ID vom Frame fehlen würde. Da müsste ich ja immer noch mein altes Script einsetzten also:

PHP-Code:
this.button1_mc.onRelease = function() { 
    
getURL('home.php''content'); 
}; 
Ich glaube, so ist es richtig ^^
__________________
Wie kommt mein Öl unter deinen Boden?
Masterpi ist offline   Mit Zitat antworten
Alt 16-02-2006, 12:49   #6 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
Gott, was schreibe ich eigentlich für einen müll^^

So geht das:

PHP-Code:
for(var i=1;i<=6;i++){
// : i steht fuer die jeweilige Nummer
this["button"+i].stop();
this["button"+i].onRollOver = function(){
this.onEnterFrame = function(){ 
    
this.onEnterFrame = function() {
        
// : gehe immer ein schritt vor in der Zeitleiste
        
this.nextFrame();
        
// : wenn ende der Zeitlieste erreicht ist halte an
        
if (this._currentframe == this._totalframes) {
            
delete this.onEnterFrame;
        }
    };
}
}
this["button"+i].onRollOut = function(){
this.onEnterFrame = function() {
        
// : gehe immer ein schritt zurueck in der Zeitleiste
        
this.prevFrame();
        
// : wenn erste Frame ereicht ist hallte die Animation an
        
if (this._currentframe == 1) {
            
delete this.onEnterFrame;
        }
    };
}
this["button"+i].onPress = function(){
trace("toll");
}

Wunderbar, wie man seine Probleme selbst löst, wenn man mal kein Brett vorm Kopf hat. Danke an euch für den Denkanstoß
__________________
Wie kommt mein Öl unter deinen Boden?
Masterpi ist offline   Mit Zitat antworten
Alt 16-02-2006, 12:52   #7 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Das mit dem Array diente nur dazu, die Zuweisung in Abhängigkeit von der benötigten Anzahl zu machen (ein bisschen mehr Dynamik! ). Wenn du aber ne bestimmte Anzahl hast und die nicht mehr verändern wirst, kannst du dann in der For-Schleife auch eine Zahl setzen und das Array weg lassen...

Deinen Code könnte man noch weiter optimieren und korrigieren (mal Rechtschreibungprüfung in Flash durchführen! --> 4 Fehler! ):
PHP-Code:
for (i=1i<7i++) {
    
this["button"+i].onPress = function() {
        
this.stop();
    };
    
this["button"+i].onRollOver = function() {
        
this.onEnterFrame = function() {
            
// : gehe immer ein schritt vor in der Zeitleiste  
            
this.nextFrame();
            
// : wenn ende der Zeitlieste erreicht ist halte an  
            
if (this._currentframe == this._totalframes) {
                
delete this.onEnterFrame;
            }
        };
    };
    
this["button"+i].onRollOut = function() {
        
this.onEnterFrame = function() {
            
// : gehe immer ein schritt zurueck in der Zeitleiste  
            
this.prevFrame();
            
// : wenn erste Frame ereicht ist hallte die Animation an  
            
if (this._currentframe == 1) {
                
delete this.onEnterFrame;
            }
        };
    };

__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 16-02-2006, 13:40   #8 (permalink)
FlashForRum
 
Benutzerbild von störie
 
Registriert seit: Oct 2004
Ort: börlinn
Beiträge: 583
da wird dann allerdings das laden der home.php schwer
__________________
>>Achim Fehltdawas<<
°-°
mySite
myFlash-toons
mySpace
störie ist offline   Mit Zitat antworten
Alt 16-02-2006, 14:42   #9 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
Warum? Wie wäre denn dein Lösungsansatz, um die home.php einfacher zu laden? Würde mich jetzt echt mal interessieren, wie andere das lösen
__________________
Wie kommt mein Öl unter deinen Boden?
Masterpi ist offline   Mit Zitat antworten
Alt 16-02-2006, 14:49   #10 (permalink)
FlashForRum
 
Benutzerbild von störie
 
Registriert seit: Oct 2004
Ort: börlinn
Beiträge: 583
na du brauchst ja in dem onPress irgendwas was dir sagt WAS geladn werden soll... also brauchst du den array, der dir sacht button1 is für home, button2 für...

das wird mit der this["button"+i].id aus dem array gelesen und dann in der getURL eingefügt...

quasi: sites[this.id]

das this.id is nötig, da i in der schleife ja immer um eins erhöht wird und sonst alle buttons bei

sites[i]

den gleichen (letzten) eintrag im array laden würden.


...müsste dann eigentlich so klappen:

this["button"+i].onRelease = function() {
getURL(sites[this.id]+'.php', 'content');
};

...aber ohne gewähr...
__________________
>>Achim Fehltdawas<<
°-°
mySite
myFlash-toons
mySpace

Geändert von störie (16-02-2006 um 14:55 Uhr)
störie ist offline   Mit Zitat antworten
Alt 16-02-2006, 15:34   #11 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
ahhh guter Ansatz, ich hätte jetzt für alle sechs Button ne noch mal ne onrelease Funktion mit getURL gamacht^^ Ich werde deinen Ansatz mal ausprobieren. Mal gucken, wie weit ich damit komme
__________________
Wie kommt mein Öl unter deinen Boden?
Masterpi ist offline   Mit Zitat antworten
Alt 16-02-2006, 16:16   #12 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
Also wenn ich euch jetzt richtig verstanden habe, sollte es so aussehen:

PHP-Code:
sites =["home""agentur""leistungen""referenzen""kunden""kontakt"];

for (
i=1i<=sites.lengthi++) {
    
this["button"+i].stop();
    
this["button"+i].onRollOver = function() {
        
this.onEnterFrame = function() {
            
// : gehe immer ein schritt vor in der Zeitleiste
            
this.nextFrame();
            
// : wenn ende der Zeitlieste erreicht ist halte an
            
if (this._currentframe == this._totalframes) {
                
delete this.onEnterFrame;
            }
        };
    };
    
this["button"+i].onRollOut = function() {
        
this.onEnterFrame = function() {
            
// : gehe immer ein schritt zurueck in der Zeitleiste
            
this.prevFrame();
            
// : wenn erste Frame ereicht ist hallte die Animation an
            
if (this._currentframe == 1) {
                
delete this.onEnterFrame;
            }
        };
    };
}
this["button"+i].onRelease = function() {
getURL(sites[this.id]+'.php''content');
}; 
Aber es klappt nicht Warum? Ich habe inzwischen mal das Flashforum durchsucht, aber wenn ich nach Button Array oder ähnlichem suche, finde ich keine gescheite Lösung.
__________________
Wie kommt mein Öl unter deinen Boden?
Masterpi ist offline   Mit Zitat antworten
Alt 16-02-2006, 16:22   #13 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Die this.onRelease Geschichte muß innerhalb der for-schleife liegen!!
Und die this.id muß gesetzt werden!
PHP-Code:
var sites = ["home""agentur""leistungen""referenzen""kunden""kontakt"];
for (
i=1i<=sites.lengthi++) {
    
this["button"+i].id i;
    
this["button"+i].stop();
    
this["button"+i].onRollOver = function() {
        
this.onEnterFrame = function() {
            
// : gehe immer ein schritt vor in der Zeitleiste 
            
this.nextFrame();
            
// : wenn ende der Zeitlieste erreicht ist halte an 
            
if (this._currentframe == this._totalframes) {
                
delete this.onEnterFrame;
            }
        };
    };
    
this["button"+i].onRollOut = function() {
        
this.onEnterFrame = function() {
            
// : gehe immer ein schritt zurueck in der Zeitleiste 
            
this.prevFrame();
            
// : wenn erste Frame ereicht ist hallte die Animation an 
            
if (this._currentframe == 1) {
                
delete this.onEnterFrame;
            }
        };
    };
    
this["button"+i].onRelease = function() {
        
getURL(sites[this.id]+'.php'"content");
    };

__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"

Geändert von RustyCake (16-02-2006 um 16:25 Uhr)
RustyCake ist offline   Mit Zitat antworten
Alt 16-02-2006, 16:54   #14 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
Hey prima bis auf eine Sache klappt es jetzt

und zwar läd er die Buttons versetzt?!?!? Also wenn ich auf den Button home klicke, läd er nicht home sondern agentur in den Frame "Content" und wenn ich auf den Button Agentur klicke, läd er leistungen in den Frame usw.

Kann es vielleicht daran liegen, dass ein Array bei 0 anfängt und dieses Script eventuell bei 1 oder so?

Hat jemand eine Idee, woran das liegen könnte? Wäre schade, wenn es wegen diesem kleinen fehler nichts wird, mit dem schönen script

Aber dennoch vielen Dank an die bisherigen Helfer, ohne euch hätte ich das nie geschafft
__________________
Wie kommt mein Öl unter deinen Boden?

Geändert von Masterpi (16-02-2006 um 17:06 Uhr)
Masterpi ist offline   Mit Zitat antworten
Alt 16-02-2006, 18:28   #15 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
OHHHH GOTT, wie man den Wald vor lauter Bäumen manchmal nicht sieht War ja klar, dass es nicht klappen konnte

es lag an diesen Zeilen

PHP-Code:
 this["button"+i].onRelease = function() { 
        
getURL(sites[this.id]+'.php'"content"); 
    }; 

Es muss natürlich heißen:

PHP-Code:
    this["button"+i].onRelease = function() { 
        
getURL(sites[this.id-1]+'.php'"content"); 
    }; 

Da der Array ja bei Null beginnt zu zählen und die id bei 1 muss man -1 hinmachen, damit alles so funzt, wie man will.

So, mein Tagespensum an Flash ist erfüllt Ich danke hier noch mal allen, die mir geholfen haben. FLASHFORUM, ICH LIEBE EUCH
__________________
Wie kommt mein Öl unter deinen Boden?
Masterpi 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 05:26 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele