我的补间形状没有正确报告其大小

时间:2011-08-16 16:42:02

标签: flash actionscript-3

如果我在两个矩形之间塑造补间,请执行以下操作:

enter image description here

在第5帧,我有以下内容:

trace(width);
trace(height);
trace(getRect(this));
trace(getBounds(this));

我回来了

49
49
(x=45, y=21, w=48, h=48)
(x=44.5, y=20.5, w=49, h=49)

所有错误!这些对于第1帧是正确的,但矩形比第5帧宽得多。补间形状似乎使结果混淆。

如何在不在整个时间轴上添加关键帧的情况下获取第5帧的实际矩形?

2 个答案:

答案 0 :(得分:1)

我发了一篇关于如何获取显示对象边界的帖子,即使我的博客上有透明区域。它解释了下面的代码。 http://plasticsturgeon.com/2010/09/as3-get-visible-bounds-of-transparent-display-object/

package util
{
   import flash.display.DisplayObject;
   import flash.display.BitmapData;
   import flash.geom.Rectangle;
   import flash.geom.Matrix;
   public function getVisibleBounds(source:DisplayObject):Rectangle
   {
       // Updated 11-18-2010;
       // Thanks to Mark in the comments for this addition;
       var matrix:Matrix = new Matrix()
       matrix.tx = -source.getBounds(null).x;
       matrix.ty = -source.getBounds(null).y;

       var data:BitmapData = new BitmapData(source.width, source.height, true, 0x00000000);
       data.draw(source, matrix);
       var bounds : Rectangle = data.getColorBoundsRect(0xFFFFFFFF, 0x000000, false);
       data.dispose();
       return bounds;
   }
}

如果您输入包含补间形状的显示对象,您将获得精确的高度和高度以及边界。

答案 1 :(得分:0)

尝试乘以比例来获得真实的宽度和高度:

var realWidth:Number = scaleX * width;
var realHeight:Number = scaleY * height;

修改

如何自己计算尺寸?

// Values roughly based on your screenshot, but you might need to adjust them
var startWidth = 10;
var endWidth = 100;
var startFrame = 5;
var endFrame = 10;
var currentWidth = startWidth + ((startFrame - currentFrame) / endFrame) * (endWidth - startWidth);
// Then the same for currentHeight