用2张JPG做PNG优化
2010-06-24 21:02 hbb 阅读(801) 评论(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