每天学一点flash(84) 翻转(2)
发布时间:2020-12-15 06:31:48 所属栏目:百科 来源:网络整理
导读:? ? ?今天 继续做 上星期的实验,在家里写的程序一般很懒惰去用高级一点第三方类,很多事情就想用一些原始办法去实现,往往发现时间效率跟不上去,这样去折磨自己。其实就想用写一点原始的东西,其他就没什么了。 ? ? ? ? 今天这个程序只是加多一个额外参数
? ? ?今天 继续做 上星期的实验,在家里写的程序一般很懒惰去用高级一点第三方类,很多事情就想用一些原始办法去实现,往往发现时间效率跟不上去,这样去折磨自己。其实就想用写一点原始的东西,其他就没什么了。 ? ? ? ? 今天这个程序只是加多一个额外参数,最初的目的只是想实现多圈翻转之后就进行缓冲慢下来的效果,目前这个办法去实现还不够理想,定下的参数还过于死板,下次抽点时间去改善这个玩意。 ? ? ?下面只是增加一个圈数参数,可以让图片翻转多少次后慢慢停下来。 ? ? ?基本想做的实验就是这种玩意,递减地旋转!看看下个星期想到其他办法去改进一下。今晚就到此为止了。 ?? var data:Array = [new bitmapDataA(0,0),new bitmapDataB(0,0)];//准备两张位图 var effect:FilpEffect=new FilpEffect(); effect.x=250; effect.y=200; addChild(effect); effect.fill(data[0],data[1]); effect.addEventListener(MouseEvent.CLICK,onFilp); function onFilp(event:MouseEvent):void { effect.rest(); effect.doEffect(5); } ? ? 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:Number = 20; private var isFilp:Boolean = false; private var bitmap:Bitmap; private var count:Number=0; private var isComplete:Boolean = false; private var turns:int;//圈数 private var currentTurns:int;//当前圈数 private var maxValue:int = 85; private var isOver:Boolean = false; private var isOver180:Boolean=false; private var a:Number=0.1; 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(turns:int=1,rotaX:int=0):void { if (! isFilp) { addEventListener(Event.ENTER_FRAME,onFilp); isFilp = true; this.rotationX=rotaX; this.turns = turns;//加入翻转的圈数 } } private function onFilp(event:Event):void { count +=speed; speed-=a; this.rotationY = count % 360; if (! isOver && count > maxValue) { bitmap.bitmapData = (bitmap.bitmapData ==data[0]) ? data[1]:data[0] ; this.scaleX = this.scaleX ==1?-1:1; isOver = true; maxValue = (maxValue == 265) ? 85:265; } if (! isComplete && isOver && count >265) { isOver = false; isComplete = true; } if(count>=180 && !isOver180) { currentTurns++; isOver180=true; } if (count>=360 ) { isComplete = false; count = 0; isOver = false; isOver180=false; } if (turns==currentTurns) { removeEventListener(Event.ENTER_FRAME,onFilp); currentTurns = 0; isFilp = false; speed=20; count = 0; isComplete = false; isOver = false; isOver180=false; maxValue=85; } } //重设默认 public function rest():void { if (data[0]) { bitmap.bitmapData = data[0]; this.scaleX = 1; } } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |