2015-05-25 93 views
0

我将动画片段对象动态添加到父容器,然后将每个新添加的片段的y位置设置为容器的高度加上一些垂直填充像素的数量。期望的效果是将新的动画片段追加到垂直动画片段列(文本消息线索)的底部。什么奇怪的是,无论什么价值我的垂直填充指定,新片段始终显示正好紧靠在先前添加的剪辑的底部,仿佛填充总是0Flash AS3,设置儿童动画片段位置时的奇怪

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的位置不反映这一点。

有什么想法?请告诉我我错过了一些荒谬的事情。提前致谢。

+0

您确定您的sms对象/ MovieClip内容正确定位吗?听起来像你可能在该剪辑的顶部有一些空的空间。此外,没有理由使用边界,只是执行'sms_history_mc.height' – BadFeelingAboutThis

+2

也许是因为你已经将第一个影片剪辑的'y'设置为填充值,所以所有剪辑仅向下移动10个像素。 –

+0

@BolesławChrobry钉了它。在'sms_history_mc'的顶部有10个像素的空白空间是什么东西在扔掉。对象的高度/宽度不反映剪辑顶部/底部/左侧/右侧的任何空白空间 – BadFeelingAboutThis

回答

0

我的问题是,正如@BoleslawChrobry指出的那样,添加到第一个mc中的10个填充像素实际上是在下次计算时从包含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;