我做了一個視覺測試出你的代碼。我沒有改變任何功能,所以我認爲你的問題是你的圖形。檢查圖形的寬度,高度和位置。如果你沒有得到任何數組,那麼可能這些值設置不正確。
每個點代表在此測試中的hitTestPoint。如果它的綠色,你有一個命中(真正的返回值)。紅色意味着沒有命中。希望這可以幫助。
TestHitPoint.as
package
{
import flash.display.Sprite;
public class TestHitPoint extends Sprite
{
private static const TILE_SIZE : int = 25;
private var levelGrid : Array;
public function TestHitPoint()
{
// add graphics to test
addChild(new WallGraphics());
// fix array
levelGrid = new Array();
// loop
for (var i : int = 0; i < height/TILE_SIZE; i++)
{
levelGrid[i] = [];
for (var j : int = 0; j < width/TILE_SIZE; j++)
{
var success : Boolean = this.getChildByName("Wall").hitTestPoint(j*TILE_SIZE, i*TILE_SIZE, true);
levelGrid[i][j] = success;
addChild(new PositionMarker(j*TILE_SIZE, i*TILE_SIZE, success));
}
}
}
public function levelMap() : void
{
}
}
}
import flash.display.Sprite;
internal class WallGraphics extends Sprite
{
public function WallGraphics()
{
name = "Wall";
with(graphics)
{
beginFill(0x0000FF, 1);
drawRect(100, 50, 60, 200);
drawRect(50, 100, 200, 50);
endFill();
}
}
}
internal class PositionMarker extends Sprite
{
public function PositionMarker(posX : Number, posY : Number, success : Boolean)
{
with(graphics)
{
beginFill((success) ? 0x00FF00 : 0xFF0000, 1);
drawCircle(posX, posY, 4);
endFill();
}
}
}
輸出:
可悲的是,我不能讓它在我的主要項目。一個新項目工作正常。 :/(是的,我複製並粘貼完全相同的代碼) – apscience
好吧,如果我在我的文檔類中它的工作。奇怪的。本地/全球職位?但是它的每一個父母的x和y都是0,0(當代碼執行時) – apscience
我只是會相信這是一個毀了我一天的鬼。把我所有的牆上代碼放入我的文檔類中。謝謝! – apscience