Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对Flash Sprite对象手动/自动调整大小的混淆_Flash_Actionscript 3 - Fatal编程技术网

对Flash Sprite对象手动/自动调整大小的混淆

对Flash Sprite对象手动/自动调整大小的混淆,flash,actionscript-3,Flash,Actionscript 3,如果我有一个自定义类子类Sprite,它会绘制一些简单的对象,那么对于Sprite.width和Sprite.height属性,它是如何工作的?例如,我可以画一个比精灵大的任意大小的矩形。 同样,如果设置宽度/高度属性,那么已经绘制的内容会发生什么变化 作为一个用例,我可能有一个木棍人,它被画成一组线,我想设置这个人的高度,渲染被缩放到这个高度 自动计算宽度/高度是否存在任何问题,或者我是否误解了这些属性的实际含义?宽度和高度作为getter更有意义。他们获取剪辑的内部内容,将其乘以scaleX

如果我有一个自定义类子类Sprite,它会绘制一些简单的对象,那么对于Sprite.width和Sprite.height属性,它是如何工作的?例如,我可以画一个比精灵大的任意大小的矩形。 同样,如果设置宽度/高度属性,那么已经绘制的内容会发生什么变化

作为一个用例,我可能有一个木棍人,它被画成一组线,我想设置这个人的高度,渲染被缩放到这个高度

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

宽度和高度作为getter更有意义。他们获取剪辑的内部内容,将其乘以scaleX/scaleY并返回

剪辑的缩放在内部存储为矩阵,您可以使用scaleX/scaleY属性以及x、y和旋转来访问矩阵的各个元素

您还可以设置宽度和高度,并且有一些稍微笨拙的代码在后台运行以使其正常工作。基本上,您设置的任何宽度都会立即转换为scaleX值。例如,如果您有一个100x100的movieclip,并且调用width=200,Flash将把它转换为scaleX=2

如果在动画制作过程中,movieclip增长到120x100,那么它将以240的宽度出现在舞台上

换句话说,您设置的宽度和高度将作为比例因子应用。这与剪辑内容无关

为了获得最大的可预测性,请始终设置为scaleX/scaleY值。

宽度和高度作为getter更有意义。他们获取剪辑的内部内容,将其乘以scaleX/scaleY并返回

剪辑的缩放在内部存储为矩阵,您可以使用scaleX/scaleY属性以及x、y和旋转来访问矩阵的各个元素

您还可以设置宽度和高度,并且有一些稍微笨拙的代码在后台运行以使其正常工作。基本上,您设置的任何宽度都会立即转换为scaleX值。例如,如果您有一个100x100的movieclip,并且调用width=200,Flash将把它转换为scaleX=2

如果在动画制作过程中,movieclip增长到120x100,那么它将以240的宽度出现在舞台上

换句话说,您设置的宽度和高度将作为比例因子应用。这与剪辑内容无关


为了获得最大的可预测性,请始终设置为scaleX/scaleY值。

我认为您有点困惑。当您更改宽度、高度、scaleX或scaleY时,精灵中绘制的任何内容都将调整大小

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


假设您有一个包含子精灵的父精灵,子精灵有一个100像素高和宽的木棍人。父级和子级的宽度和高度均为100,而scaleX和scaleY为1。现在,如果将父对象的宽度设置为50 px,则舞台上的图形将在视觉上扭曲,看起来像50 px宽,父对象的宽度将为50 px,但嵌套子对象的宽度仍将为100 px。类似地,父级的scaleX将为0.5,而子级的scaleX将保持为1。有道理吗

我想你有点糊涂了。当您更改宽度、高度、scaleX或scaleY时,精灵中绘制的任何内容都将调整大小

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


假设您有一个包含子精灵的父精灵,子精灵有一个100像素高和宽的木棍人。父级和子级的宽度和高度均为100,而scaleX和scaleY为1。现在,如果将父对象的宽度设置为50 px,则舞台上的图形将在视觉上扭曲,看起来像50 px宽,父对象的宽度将为50 px,但嵌套子对象的宽度仍将为100 px。类似地,父级的scaleX将为0.5,而子级的scaleX将保持为1。有道理吗

但是如何设置或Flash如何知道应用缩放的默认大小?假设一个简单的类将Sprite子类化,并在20,20和80,20处绘制两个圆,半径20?scaleX和scaleY都是这里的主类,它们默认为1。宽度和高度将自动调整,以适应任何内容。抱歉,我不确定我是否理解您所说的应用缩放的默认大小。默认情况下,我的意思是,如果我不更改任何内容,将报告什么宽度/高度?我想你回答了这个。。。它们是根据内容自动计算的吗?在我上面的例子中,宽度=100高度=40?是的。您可能只想在一个空白的fla中玩一些时间线代码,看看当您弄乱不同的属性时,不同的精灵会发生什么。当你把旋转也粘在里面时,它会变得很奇怪:但是你如何设置或者Flash如何知道应用缩放的默认大小?说一句简单的话
类子类Sprite并在20,20和80,20处绘制两个圆,半径20?scaleX和scaleY都是这里的主对象,它们默认为1。宽度和高度将自动调整,以适应任何内容。抱歉,我不确定我是否理解您所说的应用缩放的默认大小。默认情况下,我的意思是,如果我不更改任何内容,将报告什么宽度/高度?我想你回答了这个。。。它们是根据内容自动计算的吗?在我上面的例子中,宽度=100高度=40?是的。您可能只想在一个空白的fla中玩一些时间线代码,看看当您弄乱不同的属性时,不同的精灵会发生什么。当你把旋转也粘在里面的时候会很奇怪:DSo这是不是意味着我不能用高度*0.5来画一个粘贴人,这会不会导致一些循环计算,因为在画完之后高度会被重新计算?假设你有myCanvas:Sprite并使用draw函数来画一个粘贴人。然后将myCanvas.height=myCanvas.height*0.5设置为myCanvas.scaleY=0.5。stickman的点不会受到影响,100100点仍在100100坐标上,更改的是父容器中的myCanvas大小。所以,你的刺客的点数不会被重新计算,你已经改变了convas。@John:是的,没错,如果你在画一个剪辑时尝试使用剪辑的高度,它会不断变化,然而,经典的解决方案是以设定的大小绘制线条,并根据需要缩放包含的剪辑。这是否意味着在绘制线条时,我不能使用高度*0.5作为粘贴人,这会不会导致一些循环计算,因为在绘制后高度会重新计算?假设您有myCanvas:Sprite,并使用draw函数绘制一个粘贴人。然后将myCanvas.height=myCanvas.height*0.5设置为myCanvas.scaleY=0.5。stickman的点不会受到影响,100100点仍在100100坐标上,更改的是父容器中的myCanvas大小。因此,你的粘贴人的点数不会被重新计算,你已经更改了convas。@约翰:是的,没错,如果你在绘制剪辑时尝试使用剪辑的高度,它会不断变化,但是经典的解决方案是以设定的大小绘制线,并根据需要缩放包含剪辑的部分。