0

我正在制作一个交互式幻灯片,所有图像幻灯片都自动在 swf 的开头。

第一步是成功的,我让所有的电影剪辑都相对于圆心运行,代码在这里

var menu:Sprite = new Sprite();
menu.x = 275;
menu.y  =180;
menu.addEventListener(Event.ENTER_FRAME,moveMenu);
addChild(menu);

var disX:Number = 200;
var disY:Number = 10;
var speed:Number = 0;

initMenu(3)

function initMenu(n:int){
      for(var i:int;i<n;i++){
         var mc:MovieClip = new IconMenu();
         mc.scaleX = mc.scaleY = .5;
         menu.addChild(mc);
       }

}

function moveMenu(e:Event):void{
    var iconCount = menu.numChildren;
    var depthArray:Array = new Array();
    var angle:Number = 360/iconCount;

    for(var z:int;z<iconCount;z++){
        var mc:MovieClip = MovieClip(menu.getChildAt(z));
        mc.gotoAndStop(z+1);
        mc.x = cosD(speed+angle*z)*disX;
        mc.y = sinD(speed+angle*z)*disY;
    }
    speed+=2;

}

但在此之后,我无法计算其他值,如“alpha”、“scale”和“depth”,以使幻灯片更逼真

所有三个值都应该根据 计算mc.y,因为我认为应该有透视效果

我对 Flash 和 Actionscript3 真的很陌生,有人可以在这里帮助我吗?!

真的非常感谢!

4

1 回答 1

0

希望对您有所帮助。


阿尔法规模

上 -> 低
下 -> 高

mc.alpha = mc.y / menu.height;

mc.scaleX = mc.scaleY = mc.y / menu.height;

上 -> 高
下 -> 低

mc.alpha = 1 - mc.y / menu.height;

mc.scaleX = mc.scaleY = 1 - mc.y / menu.height;

深度

上 -> 后面
下 -> 前面

for(var i:int = menu.numChildren - 1; i > -1; i--)
{
  var mc1:MovieClip = menu.getChildAt(i) as MovieClip;
  var mc2:MovieClip = menu.getChildAt(i) as MovieClip;

  if(mc1.y < mc2.y)
  {
    if(menu.getChildIndex(mc1) > menu.getChildIndex(mc2))
    {
      menu.swapChildren(mc1, mc2);
    }
  }
}

上 -> 前面
下 -> 后面

for(var i:int = menu.numChildren - 1; i > -1; i--)
{
  var mc1:MovieClip = menu.getChildAt(i) as MovieClip;
  var mc2:MovieClip = menu.getChildAt(i) as MovieClip;

  if(mc1.y > mc2.y)
  {
    if(menu.getChildIndex(mc1) < menu.getChildIndex(mc2))
    {
      menu.swapChildren(mc1, mc2);
    }
  }
}
于 2012-05-28T15:36:30.630 回答