根据Flash& AS3中MovieClip的y位置更改“alpha”,“scale”和“depth”

时间:2012-05-28 07:28:59

标签: actionscript-3 flash

我正在进行交互式幻灯片放映,所有图像都在swf的开头自动滑动。

第一步是成功的,我让所有的M​​ovieClip只相对于圆心运行,代码在这里

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的新手,有人可以帮我吗?!

真的非常感谢!

1 个答案:

答案 0 :(得分:0)

希望能帮助你。


Alpha &amp; <强>缩放

向上 - &gt;低
向下 - &gt;高

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

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

向上 - &gt;高
向下 - &gt;低

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

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

<强>深度

向上 - &gt;
背后 向下 - &gt;前面

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);
    }
  }
}

向上 - &gt;前
向下 - &gt;背后

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);
    }
  }
}