影片剪辑在AS3

问题描述:

我试图在AS3的URL加载图像变化的宽度和高度后消失,如下所示:影片剪辑在AS3

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

尝试:myImageLoader.width = 50; myImageLoader.height = 50; – 2013-02-03 17:27:10

+0

我试过之前,同样的问题 – csuo

+0

好。你需要等待图像加载,然后管理它的大小。我会后回答 – 2013-02-03 17:32:19

这是经常误差设定的尺寸,则不能设置空显示对象(对象的宽度和高度是零)的大小。要设置您需要先画点什么显示对象的尺寸上它的graphics(例如1 * 1像素的矩形),但你应该明白,以后它,你将只是扩展您的显示对象相对于它的原始尺寸,例如,如果你画1 * 1个像素的矩形,并=身高= 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; 
} 

你需要与你的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); 
} 
+0

打我给它的Flash-广场;),但你应该添加监听器的contentLoaderInfo – 2013-02-03 17:38:32

+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; 
}