ByTearRay를 BitMapData로 변환하는 동안 EOF 오류가 발생했습니다
-
20-09-2019 - |
문제
나는 사용 중입니다
var bitmapdata:BitmapData=new BitmapData();
var pixels:Bytearray=new Bytearray();
pixels = rleDecodePixles();
bitmapdata.setPixels(bitmapdata.rect, pixels);
위의 코드의 4 번째 줄에서 "오류 : 오류 #2030 : 파일 끝이 발생했습니다." 나는 그것을 확인했다 길이 의 픽셀 4 배인 물체 너비*높이 의 rect 물체. 을 고려하면 setpixels () 기능은 ByTearRay에서 서명되지 않은 int를 읽고 해당 값을 픽셀로 설정하면 작동해야한다고 생각합니다.
그러나 나는 이것이 왜 작동하지 않는지 전혀 모른다. 그만큼 픽셀 서버에서 얻은 데이터를 rle 디코딩 한 후에 객체가 채워집니다.
제가 사용할 수있는 작업이나 다른 방법이 있습니까? 서버에서 얻은 데이터가 인식 된 형식이 아니기 때문에 로더 클래스는 작동하지 않습니다.
모든 도움은 대단히 감사합니다.
Shrikant
감사.
해결책
사용 가능한 마지막 위치를 넘어 포인터를 이동하려고 할 때 BytearRay에서 EOF 오류가 발생합니다. BytearRay를 채우면 실제로 포인터를 이동하므로 작업을 수행하기 전에 위치를 재설정해야합니다.
노력하다 :
var bitmapdata:BitmapData=new BitmapData();
var pixels:Bytearray=new Bytearray();
pixels = rleDecodePixles();
pixels.position = 0; // Reset ByteArray pointer
bitmapdata.setPixels(bitmapdata.rect, pixels);
다른 팁
또한 다음 코드가 작동한다는 것을 알았습니다.
bitmap.object.setPixels(bitmap.object.rect, bitmap.createPixels(width, height));
function creatPixels(width:int,height:int):Bytearray
{
var result:Bytearray=new Bytearray();
result.length=(width*height)<<2;
return result;
}
그러나 바이트 레이를 수정 한 후 픽셀을 설정하려고 시도하면 위에서 언급 한 오류가 발생합니다. 지금은 더 혼란 스러웠습니다.
제휴하지 않습니다 StackOverflow