AS3:动态加载图像会导致错误

时间:2010-02-04 17:52:50

标签: flex actionscript-3 image actionscript loading

我正在尝试在已存在的Flex(AS3)中加载图像:

<mx:Image id="Img"/>

使用此代码:

Img.load('http://www.path.com/image.jpg');

验证路径有效,但我总是收到此错误: TypeError:错误#1009:无法访问空对象引用的属性或方法。

我使用了文档中的代码,但仍然收到此错误!

4 个答案:

答案 0 :(得分:1)

将图像的答案放在视图堆栈的隐藏子项上,这会从其他人的角度改变问题的本质。通过将视图堆栈的creationPolicy更改为“all”,您实际上可以访问该视图堆栈的子项上的项目,而不会使它们可见。

答案 1 :(得分:0)

使用mx.Image标记时,请尝试使用  IMG.source =“http://path.com/image.jpg”; IMG.load(); 否则,您可能只需将其设置为URLRequest; 但是,null对象引用很常见,并且可能来自您在准备好之前尝试访问的许多不同的vars。 确保在Flex应用程序准备好之前您没有尝试访问IMG。 在您的代码中,在您定义文档的MXML的第一行,确保有一个creationComplete =“init()”//或者您的初始函数是什么,然后在该函数中分配IMG源。这可以确保vars不会尝试访问尚未就绪的mxml中定义的任何内容/

答案 2 :(得分:0)

你什么时候打电话给这个功能?虽然在Image控件上调用load方法并不是标准做法(设置其source属性更常见),但这样做应该没问题:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="onInitialize()">

    <mx:Script>
        <![CDATA[

            private function onInitialize():void
            {
                Img.load("http://turbonerd.com/media/images/roaming/o/20100203192528.jpg");
            }

        ]]>
    </mx:Script>

    <mx:Image id="Img" />

</mx:Application>

但是,当你调用那种方法时,这很重要;如果您在该特定行上获得空引用,那么Image控件肯定不存在。

确保在尝试访问代码中的控件之前至少等待容器的initialize事件触发(如上所述)。如果您在运行时动态添加控件,那么您应该等到控件的初始化事件,以确保有一个对象可供使用。

答案 3 :(得分:0)

好的问题是图像组件被放置在stackview上的画布上,显然你不能访问这些元素,而这个画布是不可见的

相关问题