로더 객체의 비트 맵 데이터를 가지고 있으며이를 타일로 사용하기 위해 32x32 사각형으로 분할하고 싶습니다. 그렇게하는 가장 효율적인 방법은 무엇입니까?Actionscript 3 : 비트 맵을 타일로 분할
1
A
답변
1
BitmapData
기능 copyPixels
을 사용할 수 있습니다 (link 참조). 소스 BitmapData의 한 영역 (Rectangle로 지정된 영역)의 픽셀을 BitmapData
의 특정 Point
으로 복사 할 수 있습니다. 기본적으로 각 32x32 사각형에 대해 새 BitmapData
을 만들고로드 된 객체를 반복하여 copyPixels
으로 사각형을 채울 수 있습니다.
5
나는 당신을 위해 일해 왔습니다. 기본 개념은 BitmapData 함수 copyPixels를 사용하는 것입니다. 동일한 내용은 Adobe 참조를 참조하십시오. 소스 BitmapData의 한 영역 (사각형으로 지정됨)의 픽셀을 대상 BitmapData의 특정 Point로 복사 할 수 있습니다. 각 32x32 사각형에 대해 새 BitmapData를 만들고로드 된 객체를 반복하여 copyPixels로 사각형을 채 웁니다.
var imageLoader:Loader;
function loadImage(url:String):void
{
// Set properties on my Loader object
imageLoader = new Loader();
imageLoader.load(new URLRequest(url));
imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading);
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
}
loadImage("Cow Boy.jpg");//--------->Replace this by your image. I hope you know to specify path.
function imageLoaded(e:Event):void
{
// Load Image
imageArea.addChild(imageLoader);
var mainImage:BitmapData = new BitmapData(imageArea.width,imageArea.height);
var tileX:Number = 36;
var tileY:Number = 36;
var bitmapArray:Array;
var tilesH:uint = Math.ceil(mainImage.width/tileX); // Number of Columns
var tilesV:uint = Math.ceil(mainImage.height/tileY);// Number of Rows
mainImage.draw(imageArea);
imageArea.x += 500;
bitmapArray = new Array();
for (var i:Number = 0; i < tilesH; i++)
{
bitmapArray[i] = new Array();
for (var n:Number = 0; n < tilesV; n++)
{
var tempData:BitmapData=new BitmapData(tileX,tileY);
var tempRect = new Rectangle((tileX * i),(tileY * n),tileX,tileY);
tempData.copyPixels(mainImage,tempRect,new Point(0,0));
bitmapArray[i][n]=tempData;
}
}
for (var j:uint =0; j<bitmapArray.length; j++)
{
for (var k:uint=0; k<bitmapArray[j].length; k++)
{
var bitmap:Bitmap=new Bitmap(bitmapArray[j][k]);
this.addChild(bitmap);
bitmap.x = (j+1)* bitmap.width + j*10;
bitmap.y = (k+1)* bitmap.height + k*10;
}
}
}
function imageLoading(e:ProgressEvent):void
{
// Use it to get current download progress
// Hint: You could tie the values to a preloader :)
}
관련 문제
- 1. 안드로이드는 3 비트 맵을 1로 저장합니다.
- 2. ARGB 문자열에서 비트 맵 만들기 (actionscript-3)?
- 3. 기본 ActionScript 3 스프라이트 트위닝
- 4. 비트 맵을 Format24bppRgb로 변환
- 5. actionscript 문제 3 그림 그리기
- 6. 비트 맵을 HTML에 추가
- 7. 비트 맵을 얻는 방법
- 8. 비트 맵을 문자열로 변환
- 9. 어떻게 비트 맵을 구현합니까?
- 10. 비트 맵을 축소판으로 변환
- 11. 비트 맵을 이미지로 변환
- 12. 비트 맵을 생성하고 그립니다.
- 13. actionscript 2 to actionscript 3
- 14. 비트 맵을 자르면 빈 비트 맵이 나타납니다.
- 15. 비트 맵을 다른 비트 맵에 인쇄하십시오.
- 16. VB.NET에서 BELLOW 비트 맵을 추가하십시오.
- 17. 이미지를 타일로 쌓습니다.
- 18. 비트 맵을 필요한 크기로 축소하십시오.
- 19. WP7에서 비트 맵을 PNG로 저장
- 20. 파일 스트림으로 비트 맵을 생성하십시오.
- 21. 아카이브에서 비트 맵을 비 직렬화하십시오.
- 22. WxWidgets가 불투명도가있는 비트 맵을 그립니다.
- 23. 비트 맵을 수직 방향으로 기울이기
- 24. 비트 맵을 부분적으로 런타임에 색칠하기
- 25. 비트 맵을 리소스 ID로 변환
- 26. 동적으로 비트 맵을 브라우저로 반환
- 27. android의 byteArray에서 비트 맵을 생성하십시오.
- 28. Monodroid 비트 맵을 사용하여 스트림
- 29. ImageControl에 비트 맵을 할당하는 방법
- 30. 안드로이드에서 학위로 비트 맵을 회전하십시오.
그것을 할 수있는 가장 좋은 방법은 *하지 * 타일로 분할하는 것이 아니라 (답변에서 언급 한 바와 같이 CopyPixels 사용) 대상 캔버스에 원본 소스 질감에서 직접 타일 블럭 전송. –