加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

每天学一点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;
			}
		}


	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读