每天学一点flash(84) 翻转
? ???????????????? 这个实验,需要使用两张的位图,翻转的时候切换另外一张牌进行切换,至于什么时候切换是比较好?其实就是在 90 ,270 度这两个地方让人视角产生差异的地方进行切换是比较好的。 ???????????????????因为当rotationY =90的时候,是很难看到图片的全貌,所以这个时候进行你切换位图是很难让人看得出你在干啥,在flashmath案例当中使用了这个小技巧,真是很值得去学习。 ? ????????????????? 下面做一个小实验: ? ? var data:Array = [new bitmapDataA(0,0),new bitmapDataB(0,0)];//准备两张位图 //建立容器 var container:Sprite=new Sprite(); addChild(container); container.x = 250; container.y = 200; //将位图移动到注册点位置 var bitmap:Bitmap=new Bitmap(); bitmap.bitmapData = data[0]; bitmap.x = - bitmap.width / 2; bitmap.y = - bitmap.height / 2; container.addChild(bitmap); var key:Boolean = true; var max:int = 85; addEventListener(Event.ENTER_FRAME,Run); var n:int = 5; var isflip:Boolean = true;//是否翻转 function Run(event:Event):void { n += 5; container.rotationY = n % 360; if ( isflip && n > max ) { isflip = false; if (key) { bitmap.bitmapData = data[1]; key = false; max = 265; } else { bitmap.bitmapData = data[0]; key = true; max = 85; } } if (! key && n > 265) { isflip = true; } if (n%360==0) { n = 5; isflip = true; } } ?其中var data:Array = [new bitmapDataA(0,0)];//准备两张位图 ? 一张是背面 一张是正面 ? ? ? 正面和反面 两张位图。 ? 下面再做一个小实验: 封装一个类,要求是点击牌就能够进行翻转,只是进行一个没有什么速度的效果。 ? package { import flash.display.Sprite; import flash.events.*; import flash.display.BitmapData; import flash.display.Bitmap; public class FilpEffect extends Sprite { private var data:Array = []; public var speed:int=5; private var isFilp:Boolean = false; private var bitmap:Bitmap; private var count:int; private var isComplete:Boolean=false; public function FilpEffect() { bitmap=new Bitmap(); addChild(bitmap); } //填充两个面的位图 public function fill(topBmpData:BitmapData,bottomBmpData:BitmapData):void { data.push(topBmpData,bottomBmpData); bitmap.bitmapData = data[0]; bitmap.x = - bitmap.width / 2; bitmap.y = - bitmap.height / 2; } //播放特效 public function doEffect():void { if (! isFilp) { addEventListener(Event.ENTER_FRAME,onFilp); isFilp = true; } } private function onFilp(event:Event):void { count+=speed; this.rotationY=count%360; if( !isComplete && count>85) { bitmap.bitmapData = data[1]; this.scaleX=-1; isComplete=true; } if(count>=180) { removeEventListener(Event.ENTER_FRAME,onFilp); isFilp=false; isComplete=false count=0; } } //重设默认 public function rest():void { if(data[0]) bitmap.bitmapData = data[0]; this.scaleX=1; } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |