每天学一点flash(84) 翻转(2)

来源:互联网 发布:上古卷轴5妹子捏脸数据 编辑:程序博客网 时间:2024/04/28 09: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;}}}}