AS3:通过AS3更改动画动画片段的儿童MovieClip

时间:2012-04-24 07:46:16

标签: actionscript-3 flash animation mmo

我有一个不同身体部位的角色:头发,头部,身体,手臂,腿部。 我用漫步动画和立场动画为角色制作动画。 我已经在这些动画中给了角色的头发一个实例名称,所以我可以通过AS3访问它。 让我们说我有一个不同的动画片段,它是不同类型头发的静态图像。 我希望能够使用AS3将角色的头发更改为头发。

实例: model =动画movieclip在holder movieclip中。 hair =模特儿童,但动画

类: Anim = holder movieclip(用于更改参考点和调整大小) Hair2 我想将头发更改为Hair2的实例

anim.model.hair = new Hair2();

当我跟踪它时,它显示对象已被更改但显示时未更改。 我使用的是AS3IsoLib,所以这里是一个示例代码:

var anim = new Anim();
var hair2 = new Hair2();
anim.model.hair = hair2;
sprites = [anim];

我测试了缩放头发并且工作正常,但没有替换实例本身。

我想知道如何才能做到这一点。如果你玩过一些MMO游戏,用户可以选择修改他或她的身体部位。一个例子是Adventure Quest Worlds。这就是我想要完成的效果。

1 个答案:

答案 0 :(得分:0)

AS2语法非常混乱:设置anim.model.hair实际上并不意味着什么。 这是你应该怎么写的:

//keep a reference for the previous hair
var previousHair:MovieClip = anim.model.hair;
//copy position, rotation, scale
hair2.transform.matrix = previousHair.transform.matrix.clone(); 
//remove the previous hair from model
anim.model.removeChild(previousHair);
//put the new hair in place
anim.model.addChild(hair2);
//give a new instance name to hair2 so you can access it through anim.model.hair
hair2.name = "hair";