Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-06-2004, 15:14   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 41
Button via Schleife mit AS

Ich versuche mit dem folgenden Script einen MC zu dublizieren und gleichzeitig das Script für die Animation zu erzeugen. Die Buttons werden vervielfacht und der Text aus dem Array wird korrekt zugewiesen, aber die onMouseOver-Effekte funktionieren nicht. Was ist falsch? Oder geht das nicht?


PHP-Code:
_root.button._visible=0;

_root.knoepfe = new Array("abc","def","ghi","jkl","mno");
_root.meinlevel = new Array();

for (
i=0_root.knoepfe.lengthi++){

    
_root.button.duplicateMovieClip(_root.knoepfe[i], i);
    
_root[_root.knoepfe[i]]._x 50;
    
_root[_root.knoepfe[i]]._y i*40;
    
_root[_root.knoepfe[i]].buttontext.text _root.knoepfe[i]
    
    
/* wie kann man diesen Teil automatisieren? */
    
    
_root[_root.knoepfe[i]].onRollOver = function(){
        
_root[_root.knoepfe[i]].gotoAndPlay("knopf2hell");
    }
    
_root[_root.knoepfe[i]].onRollOut = function(){
        
_root[_root.knoepfe[i]].gotoAndPlay("knopf2dunkel");
    }
    
_root[_root.knoepfe[i]].onRelease = function(){
        
trace("Knopf "+i" wurde gedrückt!");
    }
    
    
/* Ende des fehlerhaften Codes */

Newsdesigner ist offline   Mit Zitat antworten
Alt 10-06-2004, 16:33   #2 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
PHP-Code:
this.button._visible 0;
var 
knoepfe = new Array("abc""def""ghi""jkl""mno");
var 
meinlevel = new Array();
for (
i=0i<knoepfe.lengthi++) {
    
this.button.duplicateMovieClip(knoepfe[i], i);
    
this[knoepfe[i]].i;
    
this[knoepfe[i]]._x 70;
    
this[knoepfe[i]]._y i*40+20;
    
this[knoepfe[i]].buttontext.text _root.knoepfe[i];
    
this[knoepfe[i]].onRollOver = function() {
        
this.gotoAndStop("hell");
    };
    
this[knoepfe[i]].onRollOut = function() {
        
this.gotoAndStop("dunkel");
    };
    
this[knoepfe[i]].onRelease = function() {
        
trace("Knopf "+this.i+" wurde gedrückt!");
    };

Wennst fragen hast nur zu!!
Angehängte Dateien
Dateityp: zip dup_btn.zip (19,9 KB, 10x aufgerufen)
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 10-06-2004, 21:01   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 41
RustyCake, vielen Dank für die Hilfe. Es funktioniert 100%, wie gewünscht. Super !!!

Allerdings habe ich da noch eine Frage. Ich möchte in der function, die mit onRelease ausgelöst wird, die Variable "news" setzen, die soll den Wert von knoepfe[i] übernehmen.

PHP-Code:
    this[knoepfe[i]].onRelease = function() { 
        
loadMovieNum("info.swf",1);
        
_global.news knoepfe[i];
        
trace("Knopf "+this.i+" wurde gedrückt!"); 
    }; 
Gleichzeitig lade ich auf die Ebene 1 den movie info.swf. Dort will ich den übergebenen Wert anzeigen. Nun die Frage, wie bekomme ich _global.news aus der function. Mit return _global.news geht es nicht. Gibt es einen Weg?
Angehängte Dateien
Dateityp: zip testflash.zip (5,9 KB, 0x aufgerufen)
Newsdesigner ist offline   Mit Zitat antworten
Alt 10-06-2004, 23:42   #4 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Yupp geht auch!!
PHP-Code:
this.button._visible 0;
var 
knoepfe = new Array("abc""def""ghi""jkl""mno");
var 
meinlevel = new Array();
for (
i=0i<knoepfe.lengthi++) {
    
this.button.duplicateMovieClip(knoepfe[i], i);
    
this[knoepfe[i]].i;
    
//des "i" ist hier für jeden Clip gespeichert worden
    
this[knoepfe[i]]._x 70;
    
this[knoepfe[i]]._y i*40+20;
    
this[knoepfe[i]].buttontext.text _root.knoepfe[i];
    
this[knoepfe[i]].onRollOver = function() {
        
this.gotoAndStop("hell");
    };
    
this[knoepfe[i]].onRollOut = function() {
        
this.gotoAndStop("dunkel");
    };
    
this[knoepfe[i]].onRelease = function() {
        
loadMovieNum("info.swf"1);
        
_global.news knoepfe[this.i];
        
// so wirds dann aufgerufen
        
trace("Knopf "+this.i+" wurde gedrückt!");
    };

__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 11-06-2004, 08:59   #5 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 41
Es hat mir sehr geholfen. Jetzt geht es und ich kann mir einiges an Arbeit ersparen. Viele, vielen Dank!!!
Newsdesigner ist offline   Mit Zitat antworten
Alt 11-06-2004, 18:31   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 41
Und warum funktioniert das nicht, wenn XML dazu kommt? Wenn ich XML einbinde, funktioniert this nicht!

PHP-Code:
this.ort_mc._visible 0;

var 
xmlurl "meinedatei.xml";

myXML = new XML();
myXML.ignoreWhite=true;
myXML.load(xmlurl);

myXML.onLoad = function(status) {

    var 
xmlinhalt myXML.childNodes[0].childNodes;
    
newxmlarray = new Array();
    
    for (
i=0i<xmlinhalt.lengthi++) {

        
newxmlarray[i]=[i,xmlinhalt[i].childNodes[0].firstChild,xmlinhalt[i].childNodes[1].firstChild,xmlinhalt[i].childNodes[2].firstChild,xmlinhalt[i].childNodes[3].firstChild,xmlinhalt[i].childNodes[4].firstChild];

        
newxmlarray[i][3] = Number(newxmlarray[i][3].toString()); 
        
newxmlarray[i][4] = Number(newxmlarray[i][4].toString()); 
        
menge Number(newxmlarray[i][5].toString())

        
trace(newxmlarray[i][0]+"|"+newxmlarray[i][1]+"|"+newxmlarray[i][2]+"|"+newxmlarray[i][3]+"|"+newxmlarray[i][4]+"|"+newxmlarray[i][5]);

        if (
menge>1) {
            
menge " ("+newxmlarray[i][5]+")";
        } else {
            
menge "";
            }
        
        
ort_mc.duplicateMovieClip("ort_mc"+newxmlarray[i][1], i);
        
_root["ort_mc"+newxmlarray[i][1]]._x newxmlarray[i][3];
        
_root["ort_mc"+newxmlarray[i][1]]._y newxmlarray[i][4];
        
_root["ort_mc"+newxmlarray[i][1]].stadt=newxmlarray[i][2]+menge;

        
_root["ort_mc"+newxmlarray[i][1]].onRelease = function() { 
            
//loadMovieNum("info.swf",1);
            
_global.news newxmlarray[i][1];
            
trace("Knopf "+_global.news+" wurde gedrückt!"); 
        }


        
//this.ort_mc.duplicateMovieClip(newxmlarray[i][1], i); 
        //this[newxmlarray[i][1]].i = i; 
        //this[newxmlarray[i][1]]._x = newxmlarray[i][3]; 
        //this[newxmlarray[i][1]]._y = newxmlarray[i][4];
        //this[newxmlarray[i][1]].buttontext.text = _root.newxmlarray[i][2]; 
        //this[newxmlarray[i][1]].onRelease = function() { 
        //    loadMovieNum("info.swf",1);
        //    _global.news = newxmlarray[i][1];
        //    trace("Knopf "+newxmlarray[i][1]+" wurde gedrückt!"); 
        //}
    
}

Angehängte Dateien
Dateityp: zip test2.zip (5,2 KB, 5x aufgerufen)
Newsdesigner ist offline   Mit Zitat antworten
Alt 11-06-2004, 19:53   #7 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
this bezieht sich in dem fall auf die "myXML.onLoad=function"!!
Kannst auch eine referenz auf die Timeline schreiben, wenn des nicht in _root laufen soll!!
"var Timeline =this;" und des "_root" gegen "Timeline" tauschen, dann müßte es gehen
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake 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 22:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele