我正在尝试从具有透明度的 PNG 的 MovieClip 存储 BitmapData。当我copyPixels()
将存储的 BitmapData 存储到舞台位图的 BitmapData 时,透明度已被替换为纯白色。
我已经在谷歌上搜索了一个多小时,并自己尝试了一些东西。
这是 BitmapData 存储代码:
//for all block types
for(var block_type_properties in this.block_types)
{
//block_types[i][3] = bitmapdata
this.block_types[block_type_properties].push(new BitmapData(this.block_size,this.block_size,true,0x000000));
//block_types[i][4] = scale
this.block_types[block_type_properties].push(new Number(this.block_size/ this.block_types[block_type_properties][2].width));
//block_types[i][5] = matrix
this.block_types[block_type_properties].push(this.block_types[block_type_properties][2].transform.matrix);
//scale the matrix
this.block_types[block_type_properties][5].scale(this.block_types[block_type_properties][4],this.block_types[block_type_properties][4]);
//apply the matrix to the movieclip
this.block_types[block_type_properties][2].transform.matrix = this.block_types[block_type_properties][5];
//draw the scaled movieclip into the bitmapdata
this.block_types[block_type_properties][3].draw(this.block_types[block_type_properties][2],this.block_types[block_type_properties][5]);
}
这是实际将像素粘贴到舞台位图上的部分:
this.stage_background_bitmap_data.copyPixels(this.block_types[1][3],new Rectangle(0,0,this.block_size,this.block_size),new Point(blocks_array[block_count]['block'].x,blocks_array[block_count]['block'].y));
有谁知道为什么 PNG 中的透明度被替换为白色?
编辑:
这是构造函数中的两行代码:
this.stage_background_bitmap_data = new BitmapData(this.level_width,this.level_height,true,0x00000000);
this.stage_background_bitmap = new Bitmap(this.stage_background_bitmap_data);
我已经排除了矩阵缩放的问题。我删除了它,对透明度没有影响,或者缺乏透明度。