Flash AS3,设置儿童movieclip

时间:2015-05-25 17:45:36

标签: actionscript-3 flash

我动态地将movieclip对象添加到父容器中,然后将每个新添加的剪辑的y位置设置为容器的高度加上一些垂直填充像素。所需的效果是将新的动画片段附加到动画片段的垂直列(文本消息线程)的底部。奇怪的是,无论我为垂直填充指定了什么值,新剪辑总是显示在与先前添加的剪辑的底部完全对齐,就像填充总是为0一样。

var smsVPadding:Number = 10;

// Get current bounds of sms_history_mc
var bounds = sms_history_mc.getBounds( sms_history_mc.parent );
var yPos:Number = bounds.height + smsVPadding;

// Add the new SMS to sms_history_mc
sms_history_mc.addChild( newSMS );

newSMS.y = yPos;

如果我将newSMS.y的值明确设置为数字newSMS.y = 600,它将按预期工作。但是,如果我通过显式添加填充像素bounds.height + 10来设置yPos,结果会再次变得奇怪。

trace(newSMS.y)产生预期值,但movielip的位置并未反映出这一点。

有什么想法?请告诉我,我错过了一些荒谬的东西。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我的问题是,正如@BoleslawChrobry所指出的那样,添加到第一个mc的10个像素的填充实际上是#34;修剪的"从下一次计算时包含mc的高度开始。轻松修复:

// Get current bounds of sms_history_mc
var bounds = sms_history_mc.getBounds( sms_history_mc.parent );
var yPos:Number = sms_history_mc.height;
if( yPos > 0 ) // At least one sms has already been added
     yPos += smsVPadding;

// Add the new SMS to sms_history_mc
sms_history_mc.addChild( newSMS );

newSMS.y = yPos;