Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-03-2005, 18:16   #1 (permalink)
Elo
Nicht sehr eloquent!
 
Benutzerbild von Elo
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 181
Object an onPress übergeben

Ich habe eine Klasse Calc. Diese erzeugt ne Menge
mx.Controls.Buttons. Um diese auf die Bühne
zu bringen deklariere ich z.B. eine Klassenvariable

private var but1:mx.Controls.Button;
und im Konstruktor dann

mc.attachMovie("Button","but"+count,count);

wobei mc ein vorher übergeben MovieClip Instanz ist.
Hierbei muß ja die ButtonKomponente in der Bibliothek liegen.
Hierzu meine erste Frage: Gibt es da nicht noch einen anderen Weg?
Z.B. mit createClassObject. Habe das aber nicht so ganz verstanden.
Hier macht das vorherige deklarieren auch nicht wirklich Sinn.

Hier aber meine eigentliche Frage. Die Buttons werden in einer
for-Schleife aus einem Array heraus erzeugt.

In dieser Klasse wird ein Object op von einer anderen
Klasse erzeugt. Ich möchte jetzt in der for-Schleife
den Buttons ein onPress-Ereignis zuweisen welches
eine Methode des op Objektes aufruft. Aber mir ist nicht klar wie.

Hier mal die for-Schleife:

PHP-Code:
function init() {
        
        for (var 
i:Number=0;i<all.length;i++) {
        
newX=x;
        for (var 
a:Number=0;a<all[i].length;a++) {
        
        if (
all[i][a]!=" ") {
        
mc.attachMovie("Button","but"+count,count);
        
mc["but"+count].setLabel(all[i][a]);
        
mc["but"+count].useHandCursor=true;
        
mc["but"+count]._x=newX;
        
mc["but"+count]._y=y;
        
mc["but"+count].setSize(sizeX,sizeY);
        
newX=newX+xSpace+sizeX;
        
        

                 
mc["but"+count].onPress=function() {
            
//Hier würde ich eben gerne an das Objekt op ran. Aber wie?

            
op.calculate(this.getLabel());            
        }
        
        
        
count++;
    }
    
    else 
newX=newX+emptySpace;
        
        }
        
y=y+ySpace+sizeY;    
        }
    } 


Muß ich eine eigene Klasse schreiben die von Button erbt und diese
um ein Attribut erweitert welches dann das Object speichert.
Oder geht es auch einfacher.


Vielen Dank im voraus,

Elo
__________________
In the life of a Flash developer, only one thing is guaranteed: Change.
Elo ist offline   Mit Zitat antworten
Alt 30-03-2005, 21:19   #2 (permalink)
\x3a\x6f\x29
 
Benutzerbild von [je]
 
Registriert seit: Apr 2004
Ort: paris
Beiträge: 806
ja, du musst nur eine referenz der klasse übergeben.
var ref: Object = this

Code:
function init() {
        
var ref: Object = this;

        for (var i:Number=0;i<all.length;i++) {
        newX=x;
        for (var a:Number=0;a<all[i].length;a++) {
        
        if (all[i][a]!=" ") {
        mc.attachMovie("Button","but"+count,count);
        mc["but"+count].setLabel(all[i][a]);
        mc["but"+count].useHandCursor=true;
        mc["but"+count]._x=newX;
        mc["but"+count]._y=y;
        mc["but"+count].setSize(sizeX,sizeY);
        newX=newX+xSpace+sizeX;
        
        

                 mc["but"+count].onPress=function() {
            
//Hier würde ich eben gerne an das Objekt op ran. Aber wie?

            ref.op.calculate(this.getLabel());            
        }
        
        
        count++;
    }
    
    else newX=newX+emptySpace;
        
        }
        y=y+ySpace+sizeY;    
        }
    }
als kleiner tip. konstrukte wie diese

Code:
        mc.attachMovie("Button","but"+count,count);
        mc["but"+count].setLabel(all[i][a]);
        mc["but"+count].useHandCursor=true;
        mc["but"+count]._x=newX;
        mc["but"+count]._y=y;
        mc["but"+count].setSize(sizeX,sizeY);
solltest du etwas modularer gestalten bzw auf lokale variablen zurück greifen.

Code:
        var btn = mc.attachMovie("Button","but"+count,count);
        btn.setLabel(all[i][a]);
        btn.useHandCursor=true;
        btn._x=newX;
        btn._y=y;
        btn.setSize(sizeX,sizeY);
ist doch auch gleich viel schöner, oder?
__________________
joa ebert
http://blog.joa-ebert.com/ - http://www.joa-ebert.com/

Geändert von [je] (30-03-2005 um 21:21 Uhr)
[je] ist offline   Mit Zitat antworten
Alt 31-03-2005, 11:36   #3 (permalink)
Elo
Nicht sehr eloquent!
 
Benutzerbild von Elo
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 181
Hallo [je],

vielen Dank ersteinmal. So funktioniert es jetzt. Habe auch deinen
Tip umgesetzt. Was ich aber von der Logik her nicht so richtig verstehe
ist, warum der Button Zugriff auf die lokale Variable ref hat?
__________________
In the life of a Flash developer, only one thing is guaranteed: Change.
Elo 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 15:37 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele