设置Sprite子图像的宽度

时间:2011-08-09 00:29:05

标签: flash actionscript-3 sprite

我有一个滑块类(SliderUI),我将滑块和轨道图像作为精灵传递给该类。

我要做的是,将另一个图像作为精灵传递并更改其宽度以便在滑块中进行遮罩。 (当您移动音量滑块时,它会展开或折叠)

当我尝试更改精灵的宽度时,它没有出现,我猜sprite只是容器,调整它会使它消失。

那么如何用子图像调整sprite的大小(顺便说一下,它是由Loader对象加载的)?

1 个答案:

答案 0 :(得分:0)

是的,调整Sprite的大小会让它消失。手动设置Sprite的宽度和高度就像缩放一样,当Sprite上没有绘制任何内容时,它将不会显示(因为你不能将scale设置为“nothing”)。 如果您希望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"));

如果在加载图像之前将大小设置为sprite,则不会显示精灵。

解决方案1:在加载程序中侦听完成事件并在之后设置大小。

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:使用精灵的scaleXscaleY属性来调整其大小:

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