2

我正在尝试从 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 的宽度为空。

4

3 回答 3

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;
}
于 2013-02-03T17:27:06.550 回答
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;
}
于 2013-02-03T17:37:51.247 回答
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);
}
于 2013-02-03T17:31:06.427 回答