【发布时间】:2015-05-25 17:45:36
【问题描述】:
我动态地将影片剪辑对象添加到父容器,然后将每个新添加的剪辑的 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) 产生预期值,但影片剪辑的位置并未反映这一点。
有什么想法吗?请告诉我我错过了一些荒谬的事情。提前致谢。
【问题讨论】:
-
您确定您的短信对象/MovieClip 中的内容定位正确吗?听起来您可能在该剪辑的顶部有一些空白空间。另外,没有理由使用边界,只需
sms_history_mc.height -
可能是因为您将第一个影片剪辑的
y设置为填充值,所以所有剪辑都只是向下移动了 10 个像素。 -
@BolesławChrobry 做到了。
sms_history_mc顶部的 10 个像素的空白区域是它的原因。对象的高度/宽度不反映剪辑顶部/底部/左侧/右侧的任何空白空间 -
@LDMS 你说得对,边界是不必要的——这是一些早期逻辑的遗留代码——现在改变了,谢谢。至于smsmovieclip内容的定位,看起来都不错。
-
@BoleslawChrobry 对。我明白你在说什么。将立即测试
标签: actionscript-3 flash