AS3.0 Cookbook/비트맵2008. 8. 1. 16:29
지금까지 테스트한 메서드중에 가장 고민을 많이하고 시간을 빼았긴 메서드 같다. 이 Threshold라는 메서드는 조건문과 같은 검사식을 통해 비교할 색상보다 적거나 크다...등을 만족하면 교체할 색상으로 교체하게 된다. 그리고 마스크라는 파라미터가 존재하는데 채널을 분리하거나 추출하는데 사용이 된다.

* threshold(가져올 BitmapData , 가져올 영역 , 반영할위치 , 검사식 , 비교할 색상 , 교체할 색상  ,
               마스크 , copySource(복제여부) )


이무비는 perlinNoise를 담고있는 원본소스를 만들어 이를 반영할 데이터에 Threshold 를 적용하였다.
0x00666666보다 적은 색상은 랜덤한 색상으로 교체하였고 마스크도 랜덤하게 채널을 제거하거나 추출하도록 하였다. 마스크 같은 경우 값의 범위가 커거 대부분은 채널 전체가 제거되는 일은 보기힘들고 거의 채널이 살아있다.

destBmp.threshold( srcBmp , srcBmp.rect , new Point() ,"<"  , 0x00666666 ,
                           Math.random() * 0xFFFFFFFF , Math.random() * 0xFFFFFFFF , true );

1) 검사식은 소스의 컬러가 비교할 색상과의 비교식 < , > , <= , >= , == ,!= 를 통해 참이면 반영할 색상을
    반영할 BitmapData에 반영한다.
    현재는 랜덤하게 색을 채워 넣도록 하였다
   
2) 마스크는 제외하거나 추출할 채널을 결정한다.
  - FF은 추출
  - 00은 제외한다.
    모든 채널이 있을 때 이러한 마스크에서 제외되는 채널에 따라 다양한 효과를 나타낸다.

3) 마지막 매개변수인 copySource는 설정이 true이고 검사를 만족하면 원본소스에서 데이터를 복사하여 대상에게 붙인다. copySource이 false이면 대상소스의 데이터에는 변화가 없다.
 

Posted by 버터백통