[AS3] BitmapData 사용시 퍼포먼스 향상하는법
개발/FLEX & AIR2010. 7. 23. 15:33
기본적으로 Bitmap 인스턴스는, 참조하고 있는 BitmapData 객체에 setPixcel32()나 setPixel()이 호출되는 상황을 알아챈다.
비트맵의 모든 픽셀의 색상을 바꾸게 될 경우 setPixcel32()나 setPixcel()이 한프레임에서 자주 호출될때는 퍼포먼스가 떨어지게 되는데 이런경우 퍼포먼스 향상을 위해 lock()을 사용한다.
lock()을 호출하게 되면 AS는 Bitmap 객체가 setPixel32()나 setPixcel()의 실행을 알 수 없게 강제로 막는다.
그래서 연속된 setPixcel()이 호출되는 경우는 lock()을 호출하는 편이 좋다. 호출된 후 변경하려던 모든 픽셀이 변경이 완료된 경우는 unlock()을 호출해주면 Bitmap 객체가 모든 알림을 받을 수 있게 된다.
비트맵의 모든 픽셀의 색상을 바꾸게 될 경우 setPixcel32()나 setPixcel()이 한프레임에서 자주 호출될때는 퍼포먼스가 떨어지게 되는데 이런경우 퍼포먼스 향상을 위해 lock()을 사용한다.
lock()을 호출하게 되면 AS는 Bitmap 객체가 setPixel32()나 setPixcel()의 실행을 알 수 없게 강제로 막는다.
그래서 연속된 setPixcel()이 호출되는 경우는 lock()을 호출하는 편이 좋다. 호출된 후 변경하려던 모든 픽셀이 변경이 완료된 경우는 unlock()을 호출해주면 Bitmap 객체가 모든 알림을 받을 수 있게 된다.
var bitmapData:BitmapData = new BitmapData(1024, 1024, false);
var bmp:Bitmap = new Bitmap(bitmapData);
//퍼포먼스 향샹을 위해 lock을 걸어준다.
bitmapData.lock();
for(var i:uint = 0; i < bitmapData.height; i++){
for(var j:uint = 0; j < imgData.width; j++){
bitmapData.setPixel(j, i, Math.floor(Math.random()*0xffffffff));
}
}
bitmapData.unlock(); //lock 해제
container.addChild(bmp);
var bmp:Bitmap = new Bitmap(bitmapData);
//퍼포먼스 향샹을 위해 lock을 걸어준다.
bitmapData.lock();
for(var i:uint = 0; i < bitmapData.height; i++){
for(var j:uint = 0; j < imgData.width; j++){
bitmapData.setPixel(j, i, Math.floor(Math.random()*0xffffffff));
}
}
bitmapData.unlock(); //lock 해제
container.addChild(bmp);
'개발 > FLEX & AIR' 카테고리의 다른 글
[FLEX] Flex 상에서 stage가 null 일경우 (0) | 2010.08.20 |
---|---|
[Flex] Flex Default Background Color (0) | 2010.08.17 |
[flex] shp 확장자를 가진 해안선 자료 보여주기 예제 (0) | 2010.07.15 |
[actionscript 3.0] 외부 xml 및 txt 파일 읽기 (0) | 2010.07.07 |
Bindable 메타 데이터 태그 (0) | 2010.06.18 |