Avatar billede maqhem Nybegynder
05. december 2006 - 06:07 Der er 5 kommentarer og
1 løsning

Metode returnering af oprettet instans

Når jeg i mit AS skriver:

var minInstans:Klasse = new Klasse();

Vil jeg gerne have lavet en metode i min klasse, så følgende giver rigtigt udslag:

var minInstans:Klasse = new Klasse();
trace(minInstans.getInstance()); //minInstans eller _level0.minInstans

Lidt an på, hvordan Flash vælger at returnere det :)
Avatar billede mat Nybegynder
05. december 2006 - 09:50 #1
public function getInstance():Klasse {
return this;
}

?
Avatar billede maqhem Nybegynder
05. december 2006 - 10:44 #2
Tja, det synes jeg også, jeg har prøvet, men se lige min metode:

// kode...
    function connectTo(influence:Coordinates) {
        this.pushConnections(influence);
        influence.pushConnections(this);
        trace(connections.length + ":" + influence._xPoint + ", " + this._xPoint);
        trace(influence.connections.length + ":" + influence.getFirst._xPoint + ", " + this.connections[0]._xPoint);
        // kode...
        }
    }
// kode...

metoder med underscore (_) foran returnerer variabler i instanserne. Første trace duer fint, anden gør ikke.
pushConnections er blot en metode, der tilføjer en værdi til et Array. Det skal helst være sådan, at et Array indeholder alle connections til andre instanser, som er blevet kodet til det, som rene "paths".
Det skal helst være sådan, at når man kalder

instans1.connectTo(instans2);

Så skal connections indeholde instans1 i instans 2 og vice versa.
Avatar billede maqhem Nybegynder
05. december 2006 - 10:46 #3
Output:
--
2:21, 11
2:21, 21

Og dette er bare ikke rigtigt, den skal jo helst returnere:

1:21, 11
1:21, 11
Avatar billede mat Nybegynder
05. december 2006 - 13:02 #4
class Coordinates {

    private var m_connections:Array;
    private var m_x:Number;
    private var m_y:Number;

    public function Coordinates(x:Number, y:Number) {
        m_connections = new Array();
        m_x = x;
        m_y = y;
    }
   
    public function connectTo(c:Coordinates):Void {
        pushConnections(c);
        c.pushConnections(this);
    }
    public function pushConnections(c:Coordinates):Void {
        m_connections.push(c);
    }
    public function getConnectionX(index:Number):Number {
        return m_connections[index].getX();
    }
    public function getConnectionY(index:Number):Number{
        return m_connections[index].getY();
    }
    private function getX():Number {
        return m_x;
    }
    private function getY():Number {
        return m_y;
    }
}

// eksempel

var c1:Coordinates = new Coordinates(10, 20);
var c2:Coordinates = new Coordinates(30, 40);

c1.connectTo(c2); // krydsreference

trace("c2 x: " + c1.getConnectionX(0));
trace("c2 y: " + c1.getConnectionY(0));
trace("c1 x: " + c2.getConnectionX(0));
trace("c1 y: " + c2.getConnectionY(0));

mvh mat
Avatar billede maqhem Nybegynder
05. december 2006 - 13:56 #5
Ah, tak. Dér var min fejl. Jeg havde implementeret og initialiseret mit array uden for constructoren. Tusind tak :)
Avatar billede mat Nybegynder
05. december 2006 - 13:58 #6
Jeg havde det på fornemmelsen ;) - den er ikke god.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester