2012-06-19 135 views
0

所以我正在製作一個Flash遊戲,我正在使用bitmapdata來確定與地形的碰撞檢測。這個想法是有兩組地形瓦片,一個實際地形在上面,一個簡單的只有幾個基本顏色來確定碰撞。這樣,如果英雄在「高度圖」上接觸到某種顏色,他的動作可以停止,放慢速度,他可以受到傷害或者上下縮放以顯示高度差異。爲了做到這一點,我需要通過一個數組添加一堆heightmap貼圖,就像我自己添加tile一樣。 通過bitmapdata執行此操作比我預期的要困難得多,而且在使用以下代碼時我仍然遇到錯誤。AS3位圖數據碰撞檢測

這是我得到的錯誤:TypeError:錯誤#1010:一個術語是未定義的,沒有任何屬性。

至於我可以告訴它從代碼的以下位來:

var bitmapData:BitmapData = new BitmapData(heightContainer.heightMapClip.width, heightContainer.heightMapClip.height); 

但我不知道我做錯了。 下面是完整的代碼,雖然我還沒有得到解決,以陣列的部分呢,只需要得到這個工作第一,我真的想嘗試找出休息自己:

var heightMapClip = new heightMap(); 
heightContainer.addChild(heightMapClip); 
var heightData:String; 
var hContainer:Sprite = new Sprite(); 
heightMapClip.x=-200; 
heightMapClip.y=-200; 
var bitmapData:BitmapData = new BitmapData(heightContainer.heightMapClip.width, heightContainer.heightMapClip.height); 
bitmapData.draw(heightContainer.heightMapClip); 
var myHeightMap:Bitmap = new Bitmap(bitmapData); 

heightContainer.addChildAt(hContainer,0); 
heightContainer.hContainer.addChild(myHeightMap); 

heightContainer.hContainer.addEventListener(Event.ENTER_FRAME, onClick); 
function onClick(e:Event):void 
{ 
    var obj:Sprite = e.currentTarget as Sprite; 
    var myHeightMap:Bitmap = Bitmap(obj.getChildAt(0)); 
    var pixelValue:uint = heightContainer.myHeightMap.bitmapData.getPixel(mouseX,mouseY); 
    heightData=pixelValue.toString(16); 
    if(heightData=="99ff00"){ 
     trace("Collision Detected"); 
    } 
} 

任何幫助,將不勝感激。

+0

解決它意外:D – vagabond80

回答

1

heightContainer.addChild(heightMapClip);

通過這樣做,你不要財產heightMapClip,因爲它存在並具有寬度屬性添加到heightContainer

heightContainer.heightMapClip.width這會產生錯誤

但是這不會(只要: ))

heightMapClip.width

問候 PS 「意外解決」並未指定解決方案。寫下你已經做了什麼來回答你的問題,以便其他人可以看到並從中學習。

+0

我會如果我有任何想法我是如何解決它:D這是凌晨4點,我不知道我做了什麼。只是擺弄了代碼,突然它開始工作。 – vagabond80