2010-02-19 72 views

回答

3

想到的一點是,假設您的背景(空白畫布)爲白色,請在圖像中查找白色像素。

類似:

function getWhiteRatio(bitmapData:BitmapData,rect:Rectangle):Number{ 
    var numPixels:int = rect.width * rect.height; 
    var white:int = 0; 
    var pixels:Vector.<uint> = bitmapData.getVector(rect); 
    for(var i:int = 0 ; i < numPixels; i++){ 
     if(pixels[i] == 4294967295) white++; 
    } 
    return white/numPixels; 
} 

該功能會(與白色像素數的像素的總數的圖像內)返回該白色像素的比率。如果比例接近1,那麼您的像素大多是白色的,因此您的畫布清晰。

您可能需要使用draw()方法每隔一段時間對您的矢量(繪製API生成的)畫布的BitmapData副本進行檢查,並檢查完整畫布。

如果你有一個自定義背景(不是一個單一的顏色),那麼你就需要一個稍微不同的方法:

  1. 你會用繪畫2位圖(帆布面料和當前畫布)做了一個位圖數據BlendMode.DIFFERENCE。
  2. 計算差分位圖中的黑色像素。如果像素全是黑色,則沒有區別。黑色像素越少,畫布上的東西就越多。

HTH, 喬治

1

我的想法是通過使用像素級別的碰撞檢測來做到這一點。有一些開源框架(嘗試http://www.coreyoneil.com/Flash/CDK/documentation/),它返回覆蓋率的百分比。您可以將繪製的線條與整個表面進行比較,並檢查是否有全面覆蓋。

你將不得不檢查一個完整的腳本的文檔,但這是我的路要走。