2014-02-07 3 views
0

В настоящее время я борется со скворцом. Я просто создал простой класс под названием «Звезда», который наследуется от 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, как я хотел, чтобы они были. Является ли это проблемой для скворца или я просто глуп?

ответ

0

Я не знаком с Старлинг, однако я считаю, что то, что вы видите, - это нормальное поведение во 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» вы создаете)

+0

Теперь я чувствую любопытное глупо: D Самый простой способ просто положить AddChild (звезда) перед звездой. width = ... Поскольку я добавляю изображение, когда объект инстанцируется, я не могу его масштабировать, прежде чем делать это. Другой способ - использовать свойства scaleX и scaleY, эти работы. – Taxel

Смежные вопросы