我正在进行交互式幻灯片放映,所有图像都在swf的开头自动滑动。
第一步是成功的,我让所有的MovieClip只相对于圆心运行,代码在这里
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的新手,有人可以帮我吗?!
真的非常感谢!
答案 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);
}
}
}