Actionscript 椋鸟:雪碧无法缩放

Actionscript 椋鸟:雪碧无法缩放,actionscript,air,starling-framework,Actionscript,Air,Starling Framework,我现在正在和椋鸟搏斗。我刚刚创建了一个名为“Star”的简单类,它继承自starling.display.Sprite。在“OnAddedStatage”函数的此类中,我有以下代码: 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 = -im

我现在正在和椋鸟搏斗。我刚刚创建了一个名为“Star”的简单类,它继承自starling.display.Sprite。在“OnAddedStatage”函数的此类中,我有以下代码:

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。
这是与椋鸟有关的问题还是我真的很愚蠢?

我对椋鸟不熟悉,但我相信你在Flash中看到的是正常的行为。如果您有一个精灵,它有一个100x100的红色框,您将其放入另一个精灵中,并将父精灵的宽度设置为200x200,则红色框仍将以100x100像素绘制。我有一种感觉,当使用AS2时,以前版本的flash表现不同(即,您所期望的方式),但当使用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”的引用。)

现在我觉得有点愚蠢:D最简单的方法就是将addChild(star)放在star之前。width=。。。因为我是在实例化对象时添加图像的,所以在执行此操作之前无法对其进行缩放。另一种方法是使用scaleX和scaleY属性,它们都可以工作。