纯AS+XML生成图片旋转互动效果

本文介绍了一个使用ActionScript 3 (AS3) 实现的图片轮播及交互效果案例。该案例通过XML加载图片资源,并利用数学运算将图片以圆形布局展示,同时实现了点击图片时的缓冲交换效果。文章还提供了完整的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*效果:图片旋转,点计图片有交换缓冲效果*/
/*思路;先通过xml加载外部图片,加载完毕后呈圆形显示出来,最后在旋转,还有鼠标交互方面*/
/*作者:梦自在*/
import mx.transitions.
* ;
import mx.transitions.easing.
* ;
var x0:Number 
=  Stage.width / 2 - 80 ;
var y0:Number 
=  Stage.height / 2 - 40 ;
/*半径*/
var r:Number 
=   175 ;
var raduis:Number 
=   45 ;
var p:Number 
=   0 ;
var mclListener:Object 
=   new  Object();
var picLoader:MovieClipLoader 
=   new  MovieClipLoader();
var path_array:Array 
=   new  Array();
_root.createEmptyMovieClip(
" pic_container " , _rot.getNextHighestDepth());
var myXML:XML 
=   new  XML();
myXML.ignoreWhite 
=   true ;
/*加载xml*/
myXML.onLoad 
=  function(success:Boolean)  {
if (success) {
  
for (var i:Number = 0; i<this.firstChild.childNodes.length; i++{
   path_array.push(
this.firstChild.childNodes[i].attributes.path);
   start_func();
  }

}
 else {
  trace(
"加载失败");
}

}
;
myXML.load(
" pic.xml " );
function start_func() 
{
mclListener.onLoadInit 
= function(target:MovieClip) {
  target._width 
= 100;
  target._height 
= 80;
  rotation_func();
}
;
picLoader.addListener(mclListener);
/*把图片按圆形显示*/
for (var i:Number = 0; i<=7; i++{
  pic_container.createEmptyMovieClip(
"image_container"+i, pic_container.getNextHighestDepth());
  pic_container[
"image_container"+i]._x = x0+r*Math.cos((i*raduis)*Math.PI/180);
  pic_container[
"image_container"+i]._y = y0+r*Math.sin((i*raduis)*Math.PI/180);
  picLoader.loadClip(path_array[i], pic_container[
"image_container"+i]);
}

}

function rotation_func() 
{
var num:Number;
var cinx:Number;
var ciny:Number;
/*图形按圆形旋转*/
for (var i:Number = 0; i<=7; i++{
  pic_container[
"image_container"+i].i = i;
  pic_container[
"image_container"+i].onEnterFrame = function() {
   
this._x = x0+r*Math.cos((p+raduis*this.i)*Math.PI/180);
   
this._y = y0+r*Math.sin((p+raduis*this.i)*Math.PI/180);
   p 
= p+1;
  }
;
  pic_container[
"image_container"+i].onRelease = function() {
   
/*第一次按的时候*/
   
if (!isState) {
    delete 
this.onEnterFrame;
    var myTween:Tween 
= new Tween(this"_x", Elastic.easeOut, this._x, x0, 1true);
    var myTween:Tween 
= new Tween(this"_y", Elastic.easeOut, this._y, y0, 1true);
    
/*记录此时候的图片*/
    num 
= this.i;
    isState 
= true;
   }
 else {
    
/*第二次按的时候*/
    cinx 
= this._x;
    ciny 
= this._y;
    delete 
this.onEnterFrame;
    var myTween:Tween 
= new Tween(pic_container["image_container"+num], "_x", Elastic.easeOut, x0, cinx, 1true);
    var myTween:Tween 
= new Tween(pic_container["image_container"+num], "_y", Elastic.easeOut, y0, ciny, 1true);
    var myTween:Tween 
= new Tween(this"_x", Elastic.easeOut, this._x, x0, 1true);
    var myTween:Tween 
= new Tween(this"_y", Elastic.easeOut, this._y, y0, 1true);
    pic_container[
"image_container"+num].onEnterFrame = function() {
     
/*把中间的图片按与他交换的图片的轨迹运动*/
     
this._x = x0+r*Math.cos((p+raduis*this.i)*Math.PI/180);
     
this._y = y0+r*Math.sin((p+raduis*this.i)*Math.PI/180);
     p 
= p+1;
    }
;
    num
=this.i;
   }

  }
;
}

}

 XML:

 

<? xml version = " 1.0 "  encoding = " UTF-8 " ?>
< list >
  
< pic path = " pic/0.jpg " />
  
< pic path = " pic/1.jpg " />
  
< pic path = " pic/2.jpg " />
  
< pic path = " pic/3.jpg " />
  
< pic path = " pic/4.jpg " />
  
< pic path = " pic/5.jpg " />
  
< pic path = " pic/6.jpg " />
  
< pic path = " pic/7.jpg " />
</ list >
   

 

源文件下载:http://space.flash8.net/bbs/attachment.php?aid=338355

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值