AS3.0图片切割与动画制作

网上收集的一段图片切割动画制作代码,稍做了下修改:

package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.geom.Matrix; import flash.utils.Timer; [SWF(width=40,height=40)] public class main extends Sprite { [Embed(source="ICON.png")] private var MovePng:Class; private var _bmp:Bitmap; private var _bmd:BitmapData; private var _arr:Array; private var timer:Timer; private var i:uint=0; private var j:uint=0; public function main() { var png:DisplayObject=new MovePng(); _bmd=new BitmapData(png.width, png.height, true, 0); _bmd.draw(png); _arr=fillArr(_bmd, 15, 3, _arr);//15 3 表示图片3行15列 _bmp=new Bitmap(); addChild(_bmp); _bmp.bitmapData=_arr[0][0]; timer=new Timer(150); timer.addEventListener(TimerEvent.TIMER, onTimer); stage.addEventListener(MouseEvent.MOUSE_DOWN, move); } private function onTimer(e:TimerEvent):void { _arr[i].push(_arr[i].shift()); _bmp.bitmapData = _arr[i][j]; } private function move(e:MouseEvent):void { timer.stop(); j=j==0?1:0; if (j == 1) { i =++i > 2 ? 0 : i; timer.start(); } } private function fillArr(bmd:BitmapData, wNum:uint, hNum:uint, arr:Array):Array { arr=[]; var mx:Matrix=new Matrix(); var sw:Number=bmd.width / wNum; var sh:Number=bmd.height / hNum; //var _bmd:BitmapData=new BitmapData(sw, sh,true,0); var _bmd:BitmapData; for (var i:uint=0; i < hNum; i++) { arr[i]=[]; for (var j:uint=0; j < wNum; j++) { //_bmd=_bmd.clone(); _bmd=new BitmapData(sw, sh,true,0); mx.tx=-1 * sw * j; mx.ty=-1 * sh * i; _bmd.draw(bmd, mx); arr[i][j]=_bmd; } } return arr; } } }  

 

下载代码原来用的_bmd=_bmd.clone();因为我在做透明图片的时候用他的原代码会出现后面的图片叠影,所以我每次都自己重新new一个BitmapData。

下面为用到的3行15列图片:

你可能感兴趣的:(Flex,Flash)