2009-10-12 28 views
0

我基本上試圖創建一個樹形圖。我創建了第一級,我想把它放到一個數組中,這樣下一級就可以從前一級/數組中獲得屬性。以前的陣列MC的位置

但現在看來我不能用自己獨特的「名稱」將圓圈推到circlesNewArray中。這裏有什麼問題?

我仍然不確定如果我構建我的動態intance/data/mc與最大2分離的代碼的方式是正確與否,因爲我認爲它涉及2到3數組,以保持它在同一級別當數據加載時,在進行分級時再次重新組合。

如果您有任何更好的想法,它將不勝感激。感謝名單!

私有函數dataLevel():無效{

 rootLevel=new Array(); 
     rootLevel.push(20,200); 

     newArray=new Array(); 

     var no1:Number=1; 
     var no2:Number=2; 

     if (rootLevel is Array==true) { 
      createBranch(rootLevel); 


      for (var j:Number=0; j<rootLevel.length; j++) { 
       newArray[j]=new Array(); 
       newArray[j].push(j); 
       createBranch(newArray[j]); 
      } 
     } 
    } 


    //------------------------------------------------------------------- 


    private function createBranch(runningObj:Object):void { 

     circlesNewArray = new Array(); 
     var i2=i-1; 

     for (var i:Number=0; i<runningObj.length; i++) { 

      circles = new MovieClip(); 
      var empty=null; 
      circles.graphics.beginFill(0xFF2222); 
      circles.graphics.drawCircle(empty,empty,10); 
      circles.graphics.endFill(); 

      //Passing 2 cirls in an Array 
      circlesNewArray[i]=new Array(); 
      circles.name="circles"+i; 

      circlesNewArray[i].push(circles[i]); 

      if (runningObj==rootLevel) { 
       circles.x=trunks.x - (Math.floor(Math.random()*100)-50); 
       circles.y=trunks.y - (Math.floor(Math.random()*100)); 
      } else if (runningObj!=rootLevel) { 
       circles.x=circlesNewArray[i2]-(Math.floor(Math.random()*100)-50); 
       circles.y=circlesNewArray[i2]-(Math.floor(Math.random()*100)); 
      } 

      //trace(circles.x, circles.y); 

      circles.buttonMode=true; 
      circles.addEventListener(MouseEvent.CLICK, clickTarget); 

      addChild(circles); 
     } 
    } 

回答

1

宣佈之前,您正在訪問的變量i。因此i2將被分配到NaN。不幸的是,編譯器忽略了這種錯誤。在Flash中,方法的所有局部變量,無論在代碼中聲明它們的位置,都在方法的開始處聲明,但只有代碼到達相應的執行行時,纔會爲它們分配值。

var i2=i-1;//value of i and hence that of i2 is NaN. 
for (var i:Number=0; i<runningObj.length; i++) 

由於i2NaN訪問circlesNewArray[i2]失敗呼叫。如果您希望i2的值(i - 1)在for循環中調用i2 = i - 1;

順便說一句,你想用這行代碼做什麼?

circles.x=circlesNewArray[i2]-(Math.floor(Math.random()*100)-50); 

您正在將數組推入circlesNewArray,然後以數字形式訪問它們?

+0

基本上我想跟蹤什麼是circlesNewArray [i2] .x的位置,然後放置在circleNewArray [i2]周圍的隨機位置。 – Hwang 2009-10-12 08:58:50