Установка ширины для дочернего изображения Sprite - PullRequest
0 голосов
/ 09 августа 2011

У меня есть класс слайдера (SliderUI), и я передаю слайдер и отслеживаю изображения для этого класса в качестве спрайтов.

Я пытаюсь передать еще одно изображение в виде спрайта и изменить его.его ширина для маскировки в слайдере.(Он будет расширяться или сворачиваться при перемещении ползунка громкости)

Когда я пытаюсь изменить ширину спрайта, он не отображается, и я предполагаю, что спрайт - это просто контейнер, а изменение размера приводит к его исчезновению.

Так как я могу изменить размер спрайта с его дочерним изображением (кстати, он загружается объектом Loader)?

1 Ответ

0 голосов
/ 09 августа 2011

Да, изменение размера Sprite делает его исчезающим.Ручная настройка ширины и высоты спрайта работает как масштабирование, и когда на спрайте ничего не нарисовано, оно не будет отображаться (поскольку вы не можете установить масштаб на «ничто»).Если вы хотите, чтобы Sprite имел ширину и высоту, нарисуйте на нем что-нибудь, например, прозрачный прямоугольник:

sprite.graphics.lineStyle(1, 0, 0);
sprite.graphics.drawRect(0, 0, myWidth, myHeight);

Некоторые подробности здесь: http://www.kirupa.com/forum/archive/index.php/t-274593.html

UPD:

var sprite:Sprite = new Sprite;
var loader:Loader = new Loader();
sprite.addChild(loader);
loader.load(new URLRequest("road_01.png"));

Если задать размер спрайта до загрузки изображения, спрайт не будет отображаться.

Решение 1: прослушать событие Complete в загрузчике и установить размер после.

loader.loaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);

private function onImageLoaded(event:Event):void
{
    // whatever you want to make with sprite
    // e.g.
    sprite.width = 100;
}

Решение 2: используйте свойства спрайта scaleX и scaleY, чтобы изменить его размер:

var sprite:Sprite = new Sprite;
var loader:Loader = new Loader();
sprite.addChild(loader);
loader.load(new URLRequest("road_01.png"));
sprite.scaleX = 0.5;
...