我正在尝试从as3中的url加载图像,如下所示:
var myImageLoader:Loader = new Loader();
private var mcImage: MovieClip = new MovieClip();
var myImageLocation:URLRequest = new URLRequest("http://example.com/xyz.jpg");
myImageLoader.load(myImageLocation);
mcImage.addChild(myImageLoader);
mcImage.x = 100;
mcImage.y = 100;
//mcImage.width = 50;
//mcImage.height = 50;
addChild(mcImage);
上面的代码工作正常,但由于我的欲望图像与原始图像的大小不同,因此需要更改其大小。因此,在使用上面代码中注释的行之后,mcImage就会消失。
我尝试使用 mcImage.scaleX = myImageLoader.width / 50 ,但由于myImageLoader未在开头加载,因此我们无法获得myImageLoader的宽度为null。
答案 0 :(得分:3)
设置尺寸经常出错,无法设置空显示对象的大小(宽度和高度为零的对象)。要设置显示对象的大小,首先需要在其上绘制一些内容graphics
(例如1 * 1 px矩形),但您应该明白,在它之后,您只需将显示对象相对于其原始大小进行缩放,例如,如果您绘制1 * 1 px矩形并设置为= height = 50,则scaleX和scaleY将为50,因此如果我们说装载器的加载图像将是巨大的尺寸:)这都是关于闪存中的大小。
您的任务如何:有一个常见规则 - 不调整加载程序大小,调整加载图像的大小。正如我上面所说的,加载器的大小调整只会缩放你的图像,而不是设置它的大小。添加完整的处理程序并根据需要调整loader.content的大小。
示例:
public function astest()
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplte);
addChild(loader);
loader.load(new URLRequest("https://www.google.ru/images/srpr/logo3w.png"));
}
protected function onComplte(event:Event):void
{
EventDispatcher(event.target).removeEventListener(event.type, arguments.callee);
var image:DisplayObject = (event.target as LoaderInfo).content;
image.width = 50;
image.height = 50;
}
答案 1 :(得分:0)
在玩MC之前,您需要在加载程序上获取loadComplete事件
var myImageLoader:Loader = new Loader();
private var mcImage: MovieClip = new MovieClip();
var myImageLocation:URLRequest = new URLRequest("http://example.com/xyz.jpg");
myImageLoader.addEventListener(Event.COMPLETE, completeHandler);
myImageLoader.load(myImageLocation);
function completeHandler(e:Event){
mcImage.x = 100;
mcImage.y = 100;
mcImage.width = 50;
mcImage.height = 50;
addChild(mcImage);
mcImage.addChild(myImageLoader);
}
答案 2 :(得分:0)
试试这个:
var myImageLoader:Loader = new Loader();
//hide until loaded
myImageLoader.visible = false;
//listen for load completed
myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
//...rest of your code (without setting width/height)
然后添加此项以调整大小并在加载时显示:
function completeHandler(event:Event):void
{
myImageLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
myImageLoader.content.width = 50;
myImageLoader.content.height = 50;
myImageLoader.visible = true;
}