如果我有一个自定义类子类Sprite
并且它绘制了一些简单的对象,那么它如何与Sprite.width
& Sprite.height
属性?我似乎可以绘制(例如)任何大小的矩形,大于Sprite大小。
同样,如果我设置宽度/高度属性,已经绘制的内容会发生什么?
作为一个用例,我可能会有一个以一组线条绘制的棒人,我想设置该男子的身高,并将渲染缩放到此。
是否存在自动计算宽度/高度的任何问题,或者我误解了这些属性实际意味着?
答案 0 :(得分:3)
width
和height
更有意义。它们获取剪辑的内部内容,将其乘以scaleX / scaleY并返回它。
剪辑的缩放内部存储为矩阵,您可以使用scaleX
/ scaleY
属性(以及x
,{{1})访问矩阵的各个元素}和y
)。
您还可以设置 rotation
和width
,并且会在幕后运行一些稍微笨拙的代码以使其正常工作。基本上,您设置的任何宽度都会立即变为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。有意义吗?