Actionscript 3 AS3:Z是做什么的?如何有深度?
情景: Y值越大,电影剪辑越“在前面” 如果我有两个电影剪辑Actionscript 3 AS3:Z是做什么的?如何有深度?,actionscript-3,layer,perspective,depth,Actionscript 3,Layer,Perspective,Depth,情景: Y值越大,电影剪辑越“在前面” 如果我有两个电影剪辑 Movieclip1.y is 50 Movieclip2.y is 20 那么movieclip1应该在movieclip2之前 如果 然后 movieclip4应该在最前面 movieclip3应该排在第二位 另外两个深度应该相等 差不多 this.z = this.y? 但是我不知道代码是怎样的。您可以使用以下方法对它们进行分层: 您可以使用该方法更改顺序: this.setChildIndex(movieclip1, 1)
Movieclip1.y is 50
Movieclip2.y is 20
那么movieclip1应该在movieclip2之前
如果
然后
movieclip4应该在最前面
movieclip3应该排在第二位
另外两个深度应该相等
差不多
this.z = this.y?
但是我不知道代码是怎样的。您可以使用以下方法对它们进行分层:
您可以使用该方法更改顺序:
this.setChildIndex(movieclip1, 1);
this.setChildIndex(movieclip2, 0); // switch the depths
您可以使用我制作的这个片段,它根据MovieClip的z值更改MovieClip的深度(伪代码,您可能需要编辑一下):
基本上检查最大的
z
(3d坐标)并将其与后面的任何东西交换。您想到的是z-index:@adaam它在as3中不叫z-index
。@Wobbafter道歉-我在as3中编程已经有一段时间了@是的,我只在as3中编写代码,因为我制作应用程序,这是一种简单的代码语言,但我从JavaScript中获得了大部分知识。我重新阅读了这个问题。你是说剪辑y位置的值会影响它的深度吗?但是如果我想让他们根据移动的位置改变z轴呢?所以它不是永远这样的,所以有时候movieclip 1可以走在movieclip 4前面,等等
this.addChild(movieclip1);
this.addChild(movieclip2); // is stacked above movieclip1;
this.setChildIndex(movieclip1, 1);
this.setChildIndex(movieclip2, 0); // switch the depths
addEventListener(Event.ENTER_FRAME, changeDepth);
function changeDepth():void
{
var movs = [movieclip1, movieclip2];
var movsVal = [movieclip1.z, movieclip2.z];
var a = movsVal.indexOf(Math.max.apply(movsVal));
if(movs.indexOf(a) === 0)
{
swapChildren(a, movs[movsVal.indexOf(a) + 1])
}else
{
if(movs.indexOf(a) === 1)
{
swapChildren(a, movs[movsVal.indexOf(a) - 1])
}
}
movs = [movieclip3, movieclip4];
movsVal = [movieclip3.z, movieclip4.z];
a = movsVal.indexOf(Math.max.apply(movsVal));
if(movs.indexOf(a) === 2)
{
swapChildren(a, movs[movsVal.indexOf(a) + 1])
}else
{
if(movs.indexOf(a) === 3)
{
swapChildren(a, movs[movsVal.indexOf(a) - 1])
}
}
}