Just nu i M3-nätverket
Gå till innehåll

Objekt träd


BAbram

Rekommendera Poster

Hej,

 

Går det att skapa en dynamisk trädstruktur med actionscript (flash mx)?

 

Varför fungerar t.ex. inte denna kod?

(för enkelhetens skull en länkad lista)

-----------------

 

function node(next,value){

this.next = next;

this.value = value;

return this;

}

function makeNext(node,value){

node.next = new node(null,value); //**

}

 

var root = new node(null,0);

makeNext(root,99);

 

-----------------

** Varför fungerar inte denna rad??

(root.next).value ger "undefined"...

 

Med javascript går det ju...

 

Det verkar fungera om alla noder defineras explicit men det är ju inte speciellt smidigt om man ska skapa ett träd av godtyckligt djup.

 

Tack på förhand!

 

/Björn

Länk till kommentar
Dela på andra webbplatser

Pontus östlund

Tyvärr är jag inte så vass på OOP, men jag antar att det är ett objekt du försöker skapa. Om så är fallet så måste du vända på hur du skapar funktionen. Såhär skapar du ett objekt i Flash:

// Själva konstruktorn
Node = function(next,value){
this.next = next;
this.value = value;
return this;
}

// Metod till konstruktor
Node.prototype.method = function()
this.something = something;
}
...

var root = new node(null,value);

// Sen om du vill använda metoden kan du göra det genom
root.method();

 

Hoppas det gav någon vägledning i alla fall :)

 

# ==============================extra===

# Nordens största F l a s h community

# www.communen.com | poppa@communen.com

 

Länk till kommentar
Dela på andra webbplatser

tack för svaret!

 

Verkar dock som det inte spelar någon roll hur man skriver:

 

function node() eller node = function()

 

båda verkar fungera... för nu fungerar det faktiskt, och exemplet överst fungerar också.

 

Problemet låg i att jag refererade fel till nodens barn (det felet beskrev jag aldrig):

 

var noll_array = new Array(null,null);

var root = new Node(noll_array,värden...);

 

När sedan en metod skulle lägga till barn så fungerade det inte och barnen hamnade i "noll_array" (när man tänker efter, inte helt oväntat om man ser till barnen):

 

function makeBabies(nod){

nod.barn[0] = new Node(noll_array,1,2,3);

}

 

Lösningen var helt enkelt att skippa noll_array och istället skriva:

 

function makeBabies(nod){

nod.barn[0] = new Node([null,null,null],1,2,3);

}

 

Vilket dessutom blir mycket tydligare...

 

/Björn

 

 

[inlägget ändrat 2002-10-26 00:33:16 av BjörnAbramson]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...