2010-02-04 2 views
0

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

<mx:Image id="Img"/>

С помощью этого кода:

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

path проверяется на работу, но я всегда получаю эту ошибку: TypeError: Error # 1009: Не удается получить доступ к свойству или методу ссылки на нулевой объект.

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

ответ

1

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

+0

Ничего, спасибо, не знал этого. – YesMan85

0

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

+0

Нет, это не так, пока приложение не готово, этот фрагмент кода довольно глубоко в коде, и его проверка выполняется в функции init. Установка источника дает мне ту же самую ошибку, даже без вызова функции load(). – YesMan85

+0

вы получаете эту ошибку при компиляции ?, или когда вы пытаетесь загрузить? Только другие вещи, о которых я могу думать, используют двойные кавычки: «вместо одиночных кавычек (при условии, что это было взято непосредственно из источника) или убедитесь, что ваш crossdomain.xml установлен правильно. – Ian

0

Когда вы вызываете функцию? И хотя это не является стандартной практикой для вызова метода нагрузки на элемент управления Image (установка его свойства источника является более распространенным), делать это должно быть прекрасно:

<?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

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

0

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

Смежные вопросы