遇到了文件结束。在flash.display :: BitmapData / setPixels()

时间:2012-12-15 22:12:35

标签: actionscript-3 flash actionscript eof flash-cs6

我正在尝试将库中的png文件加载到位图数据中,但在尝试执行此操作时会出现EOF错误。

  

遇到文件结尾。在flash.display :: BitmapData / setPixels()

我添加了评论,其中包含以下代码中使用的值。

var bitmapData_texture:BitmapData = new BitmapData(image.width, image.height, true, 0x0);
bitmapData_texture.draw(image);
var pixels:ByteArray = bitmapData_texture.getPixels(rect_bmp);
var bitmapData:BitmapData = new BitmapData(rect_bmp.width,rect_bmp.height,true,0x0);
trace("image width : "+image.width.toString());       //image width : 161
trace("image height: "+image.height.toString());      //image height: 171
trace("rect x      : "+rect_bmp.x.toString());        //rect x      : 0
trace("rect y      : "+rect_bmp.y.toString());        //rect y      : 0
trace("rect width  : "+rect_bmp.width.toString());    //rect width  : 161
trace("rect height : "+rect_bmp.height.toString());   //rect height : 2
trace("bmpd width  : "+bitmapData.width.toString());  //bmpd width  : 161
trace("bmpd height : "+bitmapData.height.toString()); //bmpd height : 2
bitmapData.setPixels(rect_bmp,pixels);

1 个答案:

答案 0 :(得分:1)

我看不出(已发布)代码有什么问题。您可以尝试在getPixels调用后直接跟踪byteArray信息。可能会提供有关问题的见解?

//should be 4 bytes for every pixel in byteArray; so 4x161x2 = 1288
trace(pixels.length);
//should be at start of byteArray; so 0
trace(pixels.position);
//if position=0, this should be same as length
trace(pixels.bytesAvailable);

顺便说一句,我不同意Nallaths的评论 - 你确实可以直接从库中(或通过网址)加载PNG而不必担心压缩。