1

我对 Actionscript 和 Flash 比较陌生,但是在 Microsoft 环境中拥有丰富的经验,所以我想要做的只是在 .NET 中工作,但在 Flash 中有些根本不同,我不明白我耽心。

我遇到的问题是我想向我的舞台添加一个库对象(在本例中为一个简单的矩形),并使用 ActionScript 3 动态创建它。

如果我将对象拖到舞台上,它会按预期显示,高度为 33 像素,宽度为 152 像素

如果我实例化像这样使用 ActionScript:

var rect1:myObject = new myObject() ;
rect1.x = 0 ;
rect1.y = 0 ;
addChild ( rect1 ); 

它按预期显示

我现在想在下面直接放置另一个,所以我写:

var rect2:myObject = new myObject() ;
rect2.x = 0 ;
rect2.y = rect1.height ;
addChild ( rect2 ); 

我希望它与第一个对象对齐,触摸它的下边缘,但它出现在第一个对象下方(调试报告 rect1.height 实际上设置为 106.5!)

如果我硬编码 rect2.y = 33,它会按预期显示,触摸第一个对象

这里到底发生了什么。我已经查看了舞台的 scaleY,但它只是设置为 1。我还查看了 stage.height (273.9) 和 stage.stageHeight (768) 以查看缩放是否存在相关性,但这并不也不行。

任何帮助将不胜感激。感觉就像我错过了一些明显的东西,但我已经用谷歌搜索了自己,但没有得到任何快乐。

问候尼尔

4

2 回答 2

1

Try this : rect2.y = rect1.y + rect1.height ;

于 2013-05-06T11:08:56.650 回答
1

听起来可能是注册点问题。

注册点指定符号实例相对于它的 x,y 位置的位置。

如果您双击库中的符号,您将看到符号的内容,并且您会看到代表您的注册点的小十字线。通常,您希望以该注册点为中心或内容的左上角对齐您的内容。

我的猜测是,这可能是您的问题,但如果没有看到您的内容,就不能肯定地说。

该注册点也用于旋转。如果要围绕其中心点旋转对象,则需要确保注册点位于对象的中心。

于 2013-05-06T16:51:49.960 回答