用2张JPG做PNG优化
2010-06-24 21:02 hbb 阅读(809) 评论(0) 收藏 举报昨天在adobe dev上看到一篇文章,说用2张JPG可以优化PNG。我试了一下,效果还不错,但也不是任何PNG都能优化,当透明区域很大的时候,反而两张JPG会比PNG大。
不过看到他的算法,我就很没想法了。啰啰嗦嗦写了一大堆,连Vector都用上了...其结果就是替换通道而已。
重写了他的算法如下:
package
{
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
import flash.geom.Point;
/**
* ...
* @author hbb
*/
public class JPG2PNG extends BitmapData
{
public function JPG2PNG( colorJPG:BitmapData, greyJPG:BitmapData )
{
super( colorJPG.width, colorJPG.height, true, 0 );
var origin:Point = new Point();
copyPixels( colorJPG, colorJPG.rect, origin );
copyChannel( greyJPG, colorJPG.rect, origin, BitmapDataChannel.BLUE, BitmapDataChannel.ALPHA );
}
}
}
这样一来,应该Flash8就能支持了吧...
不过看了他的demo后,也让我发现一个奥妙的事情。
Trevor的一篇教程里面说了,拖到timeline上的bitmap在发布的时候是用shape来呈现的。估计是背后自动beginBitmapFill。所以在一个空mc里面拖再多bitmap,numChildren始终为1,而且getChildAt(0)的类型是Shape。
但是demo里面我发现两个拖到场景上的图片竟然是两个Bitmap,研究半天,仔细一看,原来demo里面的两个bitmap都设置了class(linkage)。属性不一样了.... orz
浙公网安备 33010602011771号