利用AS3 ExternalInterface 实现的特殊效果

构想

  • flash尽量小? 采用背景图片与flash分离方式
  • 可编辑?外部传值
  • flash透明 背景还要有onmouseover 效果? 用AS3调用JS 操作DOM


原理

  • 利用 AS3  ExternalInterface 接口与 JS通信
  • 用坐标轴 计算得出 onmouseover 元素


初始化参数如下:

 

1 var op={
2             width:1024,               //flash 宽度
3             height:530,               //flash 高度
4             target:'new',              //tatget 不解释你懂的
5             delay:0.5,                  //动画延迟 时间单位 秒
6             autoMove:false,         //是否自动运行动画
7             img:[[imgurl,href,x,y]]  //展示图片数组  
8         }

 

与此同时 JS端 并行加载 背景图片中,代码如下:

 

 1 var BgImg = new Image();
 2    
 3     BgImg.onload = function()
 4     {
 5          /*
 6               生成色块、设置动画  
 7 
 8         */
 9          setTimeout(function()
10         {
11                 flash=document["flashUpImg"]||window["flashUpImg"];
12                 if( FlashReady) //验证flash 是否加载完成 (如何验证?) 
13                 {
14                         if(flash.jsMove())return; // 初始化设置了autoMove:false 所以这里手动调用
15                  }
16                 setTimeout(arguments.callee,10);
17 
18          },10);
19     }

 

此效果主要AS3 程序:

 

1 stage.addEventListener(MouseEvent.MOUSE_MOVE,MouseMove);   
2 
3 public function MouseMove(event:Event):void {
4             
5           ExternalInterface.call("Flash_MouseMove",stage.mouseX,stage.mouseX);//flash调用js中的方法
6   }

 

主要JS函数:

 

1 function Flash_MouseMove(x,y) //鼠标移动函数
2 {   
3     var d = Math.floor(x/barWidth);
4     if(d==nowDiv)return;    
5     $animate( pc[nowDiv], { 'marginTop':{from:'3px', to:0}, 'opacity':{from:1,to:0.8} }, 150);    
6     $animate( pc[d],      { 'marginTop':{from:0, to:'3px'}, 'opacity':{from:0.8,to:1} }, 150);
7     nowDiv = d;
8     
9 }

 

 

原文链接: http://news.9ria.com/2013/0514/27152.html

 

 

 

 

posted @ 2013-05-15 21:58  【Winco】  阅读(304)  评论(0编辑  收藏  举报