Что приходит в голову, это искать белые пиксели на изображении, предполагая, что ваш фон (пустой холст) белый.
что-то вроде:
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, ваши пиксели в основном белые, поэтому у вас есть чистый холст.
Вам может понадобиться сделать копию BitmapData вашего векторного (сгенерированного API рисования) холста время от времени с помощью метода draw () и проверить наличие полного холста.
Если у вас есть пользовательский фон (не одного цвета), вам потребуется немного другой подход:
- Вам бы хотелось получить bitmapData, нарисовав 2 растровых изображения (оригинальный холст и текущий холст) с помощью BlendMode.DIFFERENCE.
- Подсчитайте черные пиксели в разностном растровом изображении. Если все пиксели черные, разницы нет. Чем меньше черных пикселей, тем больше материала у вас на холсте.
НТН,
George