AS3: загрузка изображения динамически приводит к ошибке - PullRequest
0 голосов
/ 04 февраля 2010

Я пытаюсь загрузить изображение во Flex (AS3), которое уже существует:

<mx:Image id="Img"/>

С этим кодом:

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

Путь проверен, чтобы работать, но я всегда получаю эту ошибку: Ошибка типа: ошибка # 1009: невозможно получить доступ к свойству или методу пустой ссылки на объект.

Я использовал код из документации и все еще получаю эту ошибку!

Ответы [ 4 ]

1 голос
/ 02 марта 2010

С вашим ответом на изображение, находящееся на скрытом дочернем виде стека, это меняет природу вашей проблемы с точки зрения других людей.Вы можете получить доступ к элементам дочерних элементов этого стека просмотра, не делая их видимыми, изменив creationPolicy стека просмотра на «all».

0 голосов
/ 05 февраля 2010

Когда вы вызываете функцию? И хотя не является обычной практикой вызывать метод load для элемента управления Image (установка его свойства 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 определенно отсутствует.

Убедитесь, что вы подождали, по крайней мере, пока не сработает событие инициализации контейнера (как указано выше), прежде чем пытаться получить доступ к элементу управления в коде. Если вы динамически добавляете элемент управления во время выполнения, вам следует дождаться события инициализации элемента управления , чтобы убедиться, что там есть объект для работы.

0 голосов
/ 02 марта 2010

Хорошо, проблема была в том, что компонент изображения был помещен на холст, который был в стековом представлении, и, очевидно, вы не можете получить доступ к этим элементам, пока этот холст невидим

0 голосов
/ 04 февраля 2010

при использовании тега mx.Image попробуйте использовать IMG.source = "http://path.com/image.jpg"; IMG.load (); в противном случае вам может потребоваться просто установить его как URLRequest; ссылки на нулевые объекты встречаются довольно часто.тем не менее, они могут быть получены из ряда различных переменных, к которым вы пытаетесь получить доступ до того, как они будут готовы. Убедитесь, что вы не пытаетесь получить доступ к IMG до того, как приложение flex будет готово. в вашем коде, в первой строке MXMLгде вы определяете свой документ, убедитесь, что существует creationComplete = "init ()" // или какой-либо другой исходной функцией, а затем назначьте источник IMG внутри этой функции. Это гарантирует, что, поскольку vars не пытается получить доступ к чему-либо определенномув mxml, который еще не готов /

...