我有一个滑块类(SliderUI),我将滑块和轨道图像作为精灵传递给该类。
我要做的是,将另一个图像作为精灵传递并更改其宽度以便在滑块中进行遮罩。 (当您移动音量滑块时,它会展开或折叠)
当我尝试更改精灵的宽度时,它没有出现,我猜sprite只是容器,调整它会使它消失。
那么如何用子图像调整sprite的大小(顺便说一下,它是由Loader对象加载的)?
答案 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:使用精灵的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;