如果我在两个矩形之间塑造补间,请执行以下操作:
在第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帧的实际矩形?
答案 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