WEB开发网
开发学院图形图像Flash flash特效原理:图片滑动放大效果(2) 阅读

flash特效原理:图片滑动放大效果(2)

 2010-03-02 00:00:00 来源:WEB开发网   
核心提示: 完成之后,我们还需要对其进行倒影设置,flash特效原理:图片滑动放大效果(2)(3),这次采用网上一些倒影类的做法,辅助我们完成这个功能varr1:Reflect=newReflect({mc:bit,alpha:30,ratio:60,distance:0,updateTime:-1,ref

完成之后,我们还需要对其进行倒影设置,这次采用网上一些倒影类的做法,辅助我们完成这个功能

var r1:Reflect = new Reflect({mc:bit, alpha:30, ratio:60, distance:0, updateTime:-1, reflectionDropoff:0});

Reflect类就是一个倒影的类,在adobe 核心类库当中也存在的。效果也不错。第一个参数指定影片剪辑,第二是透明度,第三个显示的多少,第四个距离。其他是一个偏移等。日后有时间会补充这种讲解。

完成之后,也会发现这个类其实不一定适合我们这种效果,因为我们所做的并不是希望注册点在左上角,而是希望在其底部。这样会造成这个类本身设计一些缺陷,不得不最后设置他的位置。因此需要通过更改他的注册点,否则会看不到效果

下面代码清单:

其中

      import com.image.RollPhoto;
      import com.image.Reflect;
      import com.image.tool.Contain;

这一次和上次做法差不多,增加我们使用了Reflect 这个类。Contain类当中,有一个更加注册点的做法,来源于6DN的做法。效果很不错。拼合了就可以出现上面的图片效果。

总的代码:主要分为加载图片的部分,这一部分可以单独分开出去的。创建图片的部分,还有运算部分。

   1. package   
   2. {  
   3.     import flash.display.MovieClip;  
   4.     import flash.events.*;  
   5.     import flash.geom.*;  
   6.     import flash.system.*;  
   7.     import flash.text.*;  
   8.     import flash.display.BitmapData;  
   9.     import flash.display.Bitmap;  
  10.     import flash.display.DisplayObject;  
  11.     import flash.display.Loader;  
  12.     import flash.net.*;  
  13.     import com.image.RollPhoto;  
  14.     import com.image.Reflect;  
  15.     import com.image.tool.Contain;  
  16.        
  17.     public class Main extends MovieClip  
  18.     {  
  19.         private var array:Array= new Array();//用于管理的数组  
  20.         private var list:MovieClip=new MovieClip();//图片容器  
  21.         private var myphoto:RollPhoto;//图片滚动对象  
  22.         private var count:int=0;//图片加载的计数器  
  23.         private var imageList:Array=new Array();  
  24.         public function Main()  
  25.         {  
  26.             init();  
  27.         }  
  28.         private function init():void  
  29.         {  
  30.             myphoto=new RollPhoto(stage);//初始化对象  
  31.             myphoto.setPorperty(1.4,0.0025,8);//设置属性  
  32.             addEventListener(Event.ENTER_FRAME,Run);  
  33.             addImages("./image/1.png","./image/2.png","./image/3.png","./image/4.png","./image/5.png","./image/6.png","./image/7.png");//外部加载图片  
  34.             addChild(list);  
  35.             list.y=60;  
  36.             list.x=20;  
  37.                      
  38.         }  
  39.         //创建列表物体  
  40.         private function createObj(images:Array):void  
  41.         {  
  42.   
  43.             for (var i:uint=0; i<images.length; i++)  
  44.             {  
  45.                 var bit:MovieClip=new MovieClip();//空白影片剪辑                
  46.                 bit.addChild(images[i]);  
  47.                 bit.buttonMode=true;  
  48.                 bit.x=i*(bit.width+8);  
  49.                 bit.y=150;  
  50.                 var r1:Reflect = new Reflect({mc:bit, alpha:30, ratio:60, distance:0, updateTime:-1, reflectionDropoff:0});  
  51.                 array.push(bit);//数组管理  
  52.                 list.addChild(bit);//容器管理  
  53.                 Contain.RegPoint(bit,new Point(50,140));//重新更改注册点  
  54.                 bit.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);  
  55.             }  
  56.             stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);  
  57.         }  
  58.           
  59.         private function Run(event:Event):void  
  60.         {  
  61.             memory.text=String(System.totalMemory/1024)+"/kb";//内存监控  
  62.         }  
  63.         private function mouseMoveHandler(e:MouseEvent):void  
  64.         {  
  65.             if (list.hitTestPoint(mouseX,mouseY) && mouseY<300)  
  66.             {  
  67.                 myphoto.ZoomX(array);//以x轴为例  
  68.             }  
  69.             else  
  70.             {  
  71.                 System.gc();  
  72.                 myphoto.Rest(array,"x");//复位  
  73.             }  
  74.         }  
  75.   
  76.         private function mouseDownHandler(event:MouseEvent):void  
  77.         {  
  78.             trace(event.currentTarget);  
  79.         }  
  80.         //加载外部图片  
  81.         private function addImages(...args):void  
  82.         {  
  83.             count=args.length;  
  84.             for(var i:int=0;i<args.length;i++)  
  85.             {  
  86.               var loader:Loader=new Loader();  
  87.               loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);  
  88.               loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onError);  
  89.               loader.load(new URLRequest(args[i]));  
  90.             }  
  91.         }  
  92.         private function onComplete(event:Event):void  
  93.         {  
  94.             var bitmap:Bitmap=event.currentTarget.content as Bitmap;  
  95.             imageList.push(bitmap);  
  96.             event.currentTarget.removeEventListener(Event.COMPLETE,onComplete);  
  97.             count--;  
  98.             if(count==0)  
  99.             {   
 100.                trace(imageList.length);  
 101.                createObj(imageList);  
 102.             }  
 103.               
 104.   
 105.         }  
 106.         private function onError(event:Event):void  
 107.         {  
 108.             throw new Error("路径错误");  
 109.         }  
 110.   
 111.           
 112.     }  
 113. } 

不足地方:

目前来讲,感觉到计算的效率并不是很理想。需要效果能够出来,但依旧希望有所提高。任何计算都需要付出代价。因为个人能力有限,只能日后如果能够想到就继续完善这种做法。可以对其代码进行修改,要是要更加好的做法 可以留言告诉我

上一页  1 2 3 

Tags:flash 特效 原理

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接