Just nu i M3-nätverket
Jump to content

Objekt träd


BAbram

Recommended Posts

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

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...