在AS3中更改宽度和高度后,MovieClip消失

时间:2013-02-03 17:12:54

标签: actionscript-3 flash flash-cs5 flashdevelop

我正在尝试从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。

3 个答案:

答案 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;
}