【问题标题】:Flash AS3, strangeness when setting position of child movieclipFlash AS3,设置子影片剪辑位置时的奇怪
【发布时间】: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


【解决方案1】:

我的问题是,正如@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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-07
    • 2011-11-02
    • 2014-08-28
    • 2011-08-29
    • 2013-09-29
    • 2018-03-29
    • 2018-01-13
    • 1970-01-01
    相关资源
    最近更新 更多