嘿傢伙......有數學問題。試圖佈置一個灰色框的網格,我想在其上加載縮略圖。嘗試加載第4個縮略圖時,我不斷收到錯誤消息。如果您刪除了xml中的第4個人節點,它會起作用,但添加第4個節點會給我一個錯誤?未定義的錯誤我找不出
代碼如下。
任何幫助,非常感謝。
package
{
import flash.display.MovieClip;
import flash.geom.Point;
public class People extends MovieClip
{
public function People()
{
draw();
}
public function draw():void
{
var colors:Array = [0xFF0000, 0x009900];
var rows:Array = [];
var xml:XML = new XML("<data><navitem><person>person1</person><person>person2</person><person>person3</person><person>person4</person></navitem><navitem><person>person1</person><person>person2</person></navitem></data>");
var j;
var i;
for (i in xml.navitem) {
rows.push(new MovieClip());
var totRows:Number = 0;
for (j in xml.navitem[i].person) {
if(j % 3 == 1){
totRows++
}
}
if (totRows == 0) {
totRows = 1
}
rows[i].grid = createGrid(3, totRows, 85, 85,25, 25);
for (j in rows[i].grid) {
var mc:MovieClip = new MovieClip();
with (mc) {
graphics.beginFill(0, .5);
graphics.drawRect(0, 0, 85, 85);
graphics.endFill();
}
mc.x = rows[i].grid[j].x;
mc.y = rows[i].grid[j].y;
rows[i].addChild(mc);
}
// add the people
for (j in xml.navitem[i].person) {
var mc:MovieClip = new MovieClip();
with (mc) {
graphics.beginFill(colors[i], .5);
graphics.drawRect(0, 0, 85, 85);
graphics.endFill();
}
mc.x = rows[i].grid[j].x;
mc.y = rows[i].grid[j].y;
rows[i].addChild(mc);
}
addChild(rows[i]);
rows[i].y = i > 0 ? rows[(i - 1)].y + rows[(i - 1)].height + 25 : 0;
}
}
private function createGrid($columns:int, $rows:int, $xSpacing:int, $ySpacing:int, $xPadding:int, $yPadding:int, $leftToRight:Boolean = true):Array
{
var arr:Array = new Array();
var pt:Point;
var row:Number;
var col:Number;
var num:int = ($columns * $rows);
for (var i:int = 0; i < num; i++)
{
pt = new Point();
if ($leftToRight)
{
row = (i % $columns);
col = Math.floor(i/$columns);
pt.x = (row * ($xSpacing + $xPadding));
pt.y = (col * ($ySpacing + $yPadding));
}
else
{
row = (i % $rows);
col = Math.floor(i/$rows);
pt.x = (col * ($xSpacing + $xPadding));
pt.y = (row * ($ySpacing + $yPadding));
}
arr.push(pt);
}
return arr;
}
}
}
其實我不得不把它留在3因爲我只想在網格中3列。但排版變量是必須的。 – Preston 2009-11-27 22:29:08
你正在初始化的行數爲零 - 使它成爲一個,它會工作。目前,有四項,傳遞給creategrid方法的行數是1而不是2。 – Amarghosh 2009-11-28 08:36:49