2012-06-18 93 views
0

我試圖在單擊舞臺上的圖像時檢索顏色值。我打算使用它爲我正在製作的遊戲創建一個高度圖,使得角色在粗糙地形(具有特定顏色值的高度圖部分)上移動得更慢,但是我不斷收到以下錯誤:AS3:從位圖獲取顏色值

TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::[email protected] to flash.display.Bitmap. 
at testGetColor2_fla::MainTimeline/frame1() 

這裏是我到目前爲止的代碼:

import flash.display.BitmapData; 
import flash.display.Bitmap; 
import flash.events.MouseEvent; 
import flash.display.Sprite; 

var container:Sprite = new Sprite(); 

var myHeightMap:Bitmap = Bitmap(heightMap); 

this.addChild(container); 
container.addChild(myHeightMap); 

container.addEventListener(MouseEvent.CLICK, onClick); 

function onClick(e:MouseEvent):void 
{ 
    var obj:Sprite = e.currentTarget as Sprite; 

    var myHeightMap:Bitmap = Bitmap(obj.getChildAt(0)); 

    var pixelValue:uint = myHeightMap.bitmapData.getPixel(mouseX,mouseY); 

    trace(pixelValue.toString(16)); 
} 

我在做什麼錯?

回答

0

問題是,你不能僅僅通過將MovieClip轉換成Bitmap來轉換它,就像你在創建myHeightMap時試圖做的那樣。要做到這一轉換,使用以下內容:

var bitmapData:BitmapData = new BitmapData(heightMap.width, heightMap.height); 
bitmapData.draw(heightMap); 
var myHeightMap:Bitmap = new Bitmap(bitmapData); 

當然,也可能有其他方式來做到這一點。如果在調用此代碼之前,您可以找到將heightMap作爲Bitmap的方法,那將更有效。

+0

你先生,搖滾!!!!它工作!非常感謝:) 希望我能夠upvote,但我沒有足夠的聲譽。 – vagabond80

+0

很高興幫助!如果你的問題得到解決,那麼你應該標記哪個答案最有幫助爲'接受'。 :) – CheeseWarlock

+0

啊gotcha。感謝那 :) – vagabond80

0

你如何做它的方式是不完全正確:)

這是你如何轉換的電影剪輯,位圖:

function toBitmap(value:DisplayObject):Bitmap 
{ 
    var bmpData:BitmapData = new BitmapData(value.width, value.height, true, undefined); 
    bmpData.draw(value, null, null, null, null, true); 

    return new Bitmap(bmpData, "auto", true); 
} 

然後你就可以拿到像素。

請記住,RegistrationPoint必須是TOP_LEFT。