나는 약간의 스크래치를하고있는 중이 야 /를 AlphaMaskFilter 예에 따라 게임을 공개 : http://createjs.com/demos/easeljs/AlphaMaskReveal.html어떻게 AlphaMaskFilter 완전히 easeljs/createjs에서 사라진 것을 감지하는
나는 마스크가 완전히 사라진 것을 감지 할, 또는 임계 값을 사용하십시오 (예 : 90 % 스크래치).
AlphaMaskFilter, 도형 및 그래픽 개체에 관한 문서를 읽었으며이를 달성하는 방법을 잘 모르겠습니다.
Im 확실하지 않음 i 픽셀 정보에 액세스 할 수 없으며 알파 채널을 감지하여이를 감지하지만 성능 문제가 있는지 궁금합니다.
아무 도움도 환영합니다, 감사합니다.
**** 편집 ****
그래서, 나는 AlphaMapFilter (감사 레니)를 사용하여 투명성의 PCT를 가질 수 있었다 허용 대답의 ****에 담기. AlphaMapFilter는 모든 픽셀의 알파 채널에 매핑을 제공합니다. 다음은 나를 위해 일한 약간의 샘플 코드입니다 :
// mShapeToScratch is a createjs Shape. like in the http://createjs.com/demos/easeljs/AlphaMaskReveal.html example
var alphaMaskFilter = new createjs.AlphaMapFilter(mShapeToScratch.cacheCanvas);
var canvas = alphaMaskFilter.alphaMap;
var ctx = canvas.getContext("2d");
var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
var alphaData = imgData.data;
var pixelTotal = rect.h*rect.w;
var transparentPixel = 0;
// rect.h is the height of the image and rect.w is the width not shown in the example
for (var y = 0; y < rect.h; ++y)
{
for (var x=0; x < rect.w; ++x)
{
var pixelIdx = (y*rect.w + x);
if(alphaData[pixelIdx] > 128) // transparent will be 255.
{
transparentPixel++;
}
}
console.log("transparent % = " + transparentPixel/pixelTotal);
이 예제는 모든 픽셀을 검사하지만, 레니는 제안의 속도를 체크 한 모든 X 픽셀을 확인하는 매우 간단합니다.
감사합니다. Lanny, 올바르게 이해하면 이라고 말하고 있습니다. A) AlphaMaskFilter로 공개 량을 쉽게 감지 할 수있는 방법이 없습니다. 및 B) 픽셀 검사 솔루션을 사용하려면 AlphaMaskFilter를 사용할 수 없습니다. 대신 AlphaMapFilter를 사용해야합니다. 나는 correclty를 이해 했는가? – ManriK
AlphaMapFilter는 특정 채널을 사용하므로 압축 된 JPG를 마스크로 제공 할 수 있습니다. AlphaMapFilter 접근법 (픽셀 확인)을 사용하는 사용자 정의 필터를 만들고 대신 알파를 확인하도록 변경 한 다음 일종의 적용 알고리즘을 구현해야합니다. – Lanny