2011-03-02 73 views
0

我正在尋找一個包含字符串和整數上下文的對象,並已推入堆棧並將這些特定內容彈出到用戶可以看到的顯示中。顯示屏由兩個textareas和一個標籤組成。從推送的堆棧對象彈出內容到textarea

我無法弄清楚如何訪問對象的各個部分,雖然顯示出來..

這裏是我的Stack.as類:

Stack.as

package 
{ 

// credit for this class: *@author Michael Avila 

import Node; 

public class Stack 
{ 
    private var first:Node; 

     public function isEmpty() 
     { 
      return first == null; 
     } 

     public function push(data:Object) 
     { 
      var oldFirst : Node = first; 
      first = new Node(); 
      first.data = data; 
      trace(first.data.toString()); 
      first.next = oldFirst; 
     } 

     public function pop():Object 
     { 
      if (isEmpty()) 
      { 
       trace ("Error: \n\t Objects of type Stack must contain data before you attempt to pop"); 
       return true; 
      } 
      var data = first.data; 
      return Object; 
    } 
    } 
} 

這就是我如何彈出它:

...

private function nextMoveLPart(event:EffectEvent):void // open up connection get 
     { 
      if(shuffle == 0) 
      { 
      var r:Object = s.pop(); 
      trace(r); 
      stext1.text = r.cSide1; 
      trace(r.cSide1); 
      stext2.text = r.cSide2; 
      cardNumberLabel.text = r.id; 

...

這裏是我是如何推動它的堆棧:

if(i<=numResults-1) 
      { 

       var row:Object = result.data[i]; 
       s.push(row); 
       stext1.text = row.cSide1; 
       stext2.text = row.cSide2; 
       cardNumberLabel.text = row.id; 
      } 

任何幫助或建議將是真棒,並大加讚賞。謝謝!

修訂

推:

public var stackArray:Array = new Array(); 

...

if(i<=numResults-1) 
      { 

       var row:Object = result.data[i]; 
       stackArray.push(row); 
       stext1.text = row.cSide1; 
       stext2.text = row.cSide2; 
       cardNumberLabel.text = row.id; 
      } 

流行:

if(shuffle == 0) 
      { 

       var r:Object = stackArray.pop(); 
       if(r != null) 
       { 
       stext1.text = r.cSide1; 
       stext2.text = r.cSide2; 
       cardNumberLabel.text = r.id; 
       } 

回答

1

貌似這個部分是錯

public function pop():Object 
     { 
      if (isEmpty()) 
      { 
       trace ("Error: \n\t Objects of type Stack must contain data before you attempt to pop"); 
       return true; 
      } 
      var data = first.data; 
      return Object; <<<<<<<<<<<<<<<why just return Object, why not return first.data and remove first.data from the list. 
    } 

看起來像一個鏈表實現,如果一個數組,可以使用它可能會通過使用陣列,通過推倒騰它看起來,如果你想有一個傳統的堆棧行爲就像節省一些頭痛。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html

希望幫助,

肖恩

+0

哇使用數組完美。非常感謝!!向上發佈更新的代碼。 – Jordan 2011-03-02 22:15:16

+0

@Fran非常高興你有工作,只是想澄清,因爲我最初說錯了,並且恨我的名字上有錯誤信息。對於堆棧而言,先進先出的數據結構推送和彈出是傳統隊列的首選方法,您希望使用推送和移位。真高興你做到了。 – shaunhusain 2011-03-03 20:44:29