Flash as3.0 movieClip层级问题 怎么按影片剪辑Y轴坐标设置层级?

如:我想制作基于2.5D的闯关格斗游戏.游戏中敌人的层级怎么设置呢.敌人可是随机移动的.该如何设置数组排序?? setChildIndex(MC,MC.y);行不通啊!!

可以用数组排序的方法。数组有个sortOn () 方法,以下是它的详细使用方法:
根据数组中的一个或多个字段对数组中的元素进行排序。 数组应具有下列特性: 该数组是索引数组,不是关联数组。
该数组的每个元素都包含一个具有一个或多个属性的对象。
所有这些对象都至少有一个公用属性,该属性的值可用于对该数组进行排序。 这样的属性称为 field。如果您传递多个 fieldName 参数,则第一个字段表示主排序字段,第二个字段表示下一个排序字段,依此类推。 Flash 根据
Unicode 值排序。 (ASCII 是 Unicode 的一个子集。) 如果所比较的两个元素中均不包含 fieldName
参数中指定的字段,则认为将该字段设置为 undefined,在排序后的数组中将连续放置这些元素,不必遵循任何特定顺序。默认情况下,Array。sortOn() 按以下方式进行排序:排序区分大小写(Z 优先于 a)。
按升序排序(a 优先于 b)。
修改该数组以反映排序顺序;在排序后的数组中不按任何特定顺序连续放置具有相同排序字段的多个元素。
数值字段按字符串方式进行排序,因此 100 优先于 99,因为 "1" 的字符串值比 "9" 的低。Flash Player 7 添加了 options 参数,您可以使用该参数覆盖默认排序行为。
若要对简单数组(例如,仅具有一个字段的数组)进行排序,或要指定一种 options 参数不支持的排序顺序,请使用
Array.sort()。若要传递多个标志,请使用按位“或”(|) 运算符分隔它们: my_array.sortOn(someFieldName, Array.DESCENDING | Array.NUMERIC);
Flash Player 8 添加了按多个字段进行排序时为每个字段指定不同的排序选项的功能。 在 Flash Player 8
和更高版本中,options 参数接受排序选项的数组,以便每个排序选项对应于 fieldName
参数中的一个排序字段。 下例使用降序排序对主排序字段 a 排序,使用数字排序对第二个排序字段 b
排序,使用不区分大小写的排序对第三个排序字段 c 排序: Array.sortOn (["a", "b", "c"], [Array.DESCENDING, Array.NUMERIC, Array.CASEINSENSITIVE]);
注意:fieldName 和 options 数组必须具有相同数量的元素;否则,将忽略
options 数组。 此外,Array.UNIQUESORT 和
Array.RETURNINDEXEDARRAY 选项只能用作数组中的第一个元素;否则,将忽略它们。
使用这个方法,你就可以利用对象的y坐标属性值对对象进行排序,可以是升序也可以是降序,这就根据你的具体需要去写脚本了。
最后祝你成功。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-24
as3中所有的元件在容器内有先后顺序的。
游戏场景一般要对所有的角色进行深度排序,y较大的在上面,y较小的在下面。每次有一个角色出现时都要进行一次排序操作,就可以了。
至于如何排序,你了解一下addChildAt,getChildIndex类似几个方法的用法。追问

那敌人移动到上面时不是有“踩头”现象了么?

追答

所以你要深度交换啊。“踩头”说明你把敌人没换到后面去。

Flash as3.0 movieClip层级问题 怎么按影片剪辑Y轴坐标设置层级?
数值字段按字符串方式进行排序,因此 100 优先于 99,因为 "1" 的字符串值比 "9" 的低。Flash Player 7 添加了 options 参数,您可以使用该参数覆盖默认排序行为。若要对简单数组(例如,仅具有一个字段的数组)进行排序,或要指定一种 options 参数不支持的排序顺序,请使用 Array.sort()。若要...

flash(as3.0)我在主场景声明了一个全局变量,如何在影片剪辑实例里想调...
\/\/主场景 变量假设 为 var zhu:Number \/\/影片剪辑 A 内有变量为 var nei:Number \/\/对A内的nei进行赋值 \/\/注:以下代码写在A的时间帧上。var lujin:Object=this.paernt nei=lujin.zhu \/\/扩展 如果是影片剪辑里 再套 影片剪辑 那么 就为 \/\/var lujin:Object=this.paernt.parent ...

flash中AS3.0的一些问题
库中的每个影片剪辑都和MovieClip类绑定,你现在只要把绑定的MovieClip类改成Ball类就行了。方法是右键点击库中小球所属的元件,选择属性,在弹出的框的中间选择“为AS3.0导出”,在类那一框填入Ball,就可以了。2、首先要import mx.utils.DisplayUtil 然后使用walkDisplayObjects函数 语法是DisplayUtil.w...

AS3.0中如何在舞台中点击按钮来导入库中的影片剪辑
方法一,将其放到舞中上,然后获取类名的方法进行操作。方法二,右击元件属性,设置类名,然后在as中将其当成一个movieclip类一样操作。例如元件设置类名为mc var m:mc=new mc();m.x=...addChild(m);如果要删除该类,则使用 removeChild(m);...

Flash AS3.0点击影片剪辑内部按钮能否跳转到主时间轴?
复制代码到目标影片剪辑时间轴,mybtn是该影片内部按钮:import flash.events.mouseevent;import flash.display.movieclip;mybtn.addeventlistener(mouseevent.click,clickhandler);function clickhandler(event:mouseevent ){ movieclip(root).removechild(this);\/\/删除自身影片剪辑 movieclip(root).gotoandstop(...

flash cs4 主时间轴怎么控制
在AS3中,只有影片剪辑才拥有时间轴,因此,你需要把指定层级强制转换成影片剪辑才能实现操作 形如 MovieClip(目标对象实例名).时间轴函数操作 如果强制转换成功则操作成功。

as3.0 怎么用按钮控制 删除选中的影片剪辑,影片剪辑是复制出来的。_百...
假设你当前已经在场景上面创建了若干影片,(并且parent==stage,当然也可以是其他,不过你需要修改我下面出现的代码)并按照一定的序列排列好。\/\/实例化数组 var arr:Array=new Array();\/\/创建一个监听。stage.addEventListener(MouseEvent.CLICK,jr);function jr(e:MouseEvent):void { for(var i:int=...

flash as3.0代码问题急急急!
这个错误通常是由于在Flash项目中使用了重复的实例名称所致。您可以通过以下方法来解决此问题:检查Flash项目中的所有按钮和影片剪辑,确保它们具有唯一的实例名称。如果您发现两个或多个对象具有相同的实例名称,请将其中一个或多个对象的实例名称更改为其他名称。如果您不确定哪些对象具有相同的实例名称,请...

flash as3.0用什么方法得到所在帧数
currentFrame 可以指定播放头在 MovieClip 实例的时间轴中所处的帧的编号。如果影片剪辑有多个场景,该值是当前场景中的帧编号 如果你想指定播放哪一帧或在哪一帧停止的话 可以用gotoandplay(帧数),如 gotoAndStop(currentFrame);MovieClip(parent).gotoAndPlay(6)...

Flash as3.0 影片剪辑放完跳回主时间轴
as3 有事件流 冒泡事件机制可以使用

相似回答