我基本上是想创建一个树形图。我已经创建了第一个级别,我希望将其放入一个数组中,以便下一个级别能够从前一个级别/数组中获得属性。
,但现在看来,我无法用自己独特的“名称”将圆圈推入circlesNewArray。有什么问题吗?
我仍然不确定用max 2分隔构造动态意图/数据/mc代码的方式是否正确,因为我认为这涉及到2到3数组,以便在加载数据时使其保持在相同的级别之间,并在执行级别分离时重新分组。
如果你有任何更好的想法,这也将是非常感谢。谢谢!
私有函数dataLevel():void {
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);
}
}发布于 2009-10-12 08:26:10
在声明变量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++)因为i2是NaN,所以访问circlesNewArray[i2]的调用失败。如果希望i2具有值(i-1),则从for循环中调用i2 = i - 1;。
顺便说一句,你想用这行代码做什么?
circles.x=circlesNewArray[i2]-(Math.floor(Math.random()*100)-50);您将数组推入circlesNewArray,然后以数字的形式访问它们?
https://stackoverflow.com/questions/1553311
复制相似问题