对Flash Sprite对象的手动/自动调整大小的困惑

时间:2011-01-10 11:34:51

标签: flash actionscript-3

如果我有一个自定义类子类Sprite并且它绘制了一些简单的对象,那么它如何与Sprite.width& Sprite.height属性?我似乎可以绘制(例如)任何大小的矩形,大于Sprite大小。 同样,如果我设置宽度/高度属性,已经绘制的内容会发生什么?

作为一个用例,我可能会有一个以一组线条绘制的棒人,我想设置该男子的身高,并将渲染缩放到此。

是否存在自动计算宽度/高度的任何问题,或者我误解了这些属性实际意味着

2 个答案:

答案 0 :(得分:3)

作为吸气剂,

widthheight更有意义。它们获取剪辑的内部内容,将其乘以scaleX / scaleY并返回它。

剪辑的缩放内部存储为矩阵,您可以使用scaleX / scaleY属性(以及x,{{1})访问矩阵的各个元素}和y)。

您还可以设置 rotationwidth,并且会在幕后运行一些稍微笨拙的代码以使其正常工作。基本上,您设置的任何宽度都会立即变为height值。例如,如果您有一个100x100的动画片段并拨打scaleX,则Flash会将其转换为width = 200

如果那时,在动画过程中,影片剪辑会增长到120x100,然后它会出现在舞台上,宽度为240.

换句话说,您设置的宽度和高度将应用为缩放系数。它与裁剪内容无关。

为获得最大可预测性,请始终设置为scaleX = 2 / scaleX值。

答案 1 :(得分:1)

我觉得你有点困惑。当您更改宽度,高度,scaleX或scaleY时,Sprite中绘制的任何内容都将调整大小。

DisplayObjectContainers的嵌套有一个重要概念:

假设您有一个精灵,其中包含精灵,该精灵有一个高100宽100像素的棒状人物。 父级子级宽度高度为100(而 scaleX scaleY 是1)。现在,如果将宽度设置为50像素,则舞台上的绘图将在视觉上失真,它看起来像50像素宽,宽度父的em>将为50 px,但嵌套的 width 仍为100 px。同样, scaleX 将为0.5,而 scaleX 将保持为1。有意义吗?