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;

}

しかし、この後、スライドショーをよりリアルにするために「アルファ」、「スケール」、「深さ」などの他の値を計算することができません

遠近効果mc.yがあるはずだと思うので、3つの値はすべて に従って計算する必要があります

そして、私は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 に答える