Starling:Sprite无法缩放

时间:2014-02-07 01:12:01

标签: actionscript air starling-framework

我目前正在与椋鸟争吵。我刚刚创建了一个名为“Star”的简单类,它继承自starling.display.Sprite。在“onAddedToStage”函数的这个类中,我有以下代码:

img = new Image(Assets.getTextureAtlas(Assets.ATLAS_MENU).getTexture("star_full.png"));
img.height = 171;
img.width = 179;
img.x = -img.width / 2;
img.y = -img.height / 2;
addChild(img);

不幸的是,另一个类中的以下代码并不真正起作用:

 var star:ObjectStar = new ObjectStar(starsCount == totalStars);
 star.x = 286;
 star.y = 161;
 star.width = 73;
 star.height = 70;
 addChild(star);

对象在正确的位置绘制,但宽度和高度仍然是171和179,而不是像我希望的那样73和70。 这是一个与椋鸟有关的问题还是我真的很蠢?

1 个答案:

答案 0 :(得分:0)

我对Starling并不熟悉,但我相信你所看到的是Flash中的正常行为。如果你有一个Sprite,它有一个100x100的红色框,你将它放入另一个Sprite,并将父精灵的宽度设置为200x200,红色框仍将以100x100像素绘制。我有一种感觉以前版本的闪存,当使用AS2时,表现不同(即你期望它的方式)但是当使用AS3时,它没有。

无论如何......解决问题的一种方法是覆盖ObjectStar类中的宽度和高度设置器,就像这样;

override public function set width(value:Number):void 
{
    img.width = value;
    super.width = value;
}


override public function set height(value:Number):void 
{
    img.height = value;
    super.height = value;
}

因此,这样,当你设置ObjectStar的宽度和高度时,你也明确地设置了img的宽度和高度。

(显然,您需要保留对您创建的'img'的引用。)