Как решить ошибку TypeError: Ошибка № 1009: невозможно получить доступ к свойству или методу ссылки на пустой объект при вызове swf из flex 3 - PullRequest
0 голосов
/ 29 июля 2011

Я новичок во флэш. Я назвал этот флэш-код во Flex, используя загрузчик SWF. Я получил следующую ошибку. Здесь я прикрепил флэш-код для header_text_fla Пожалуйста, сделайте все необходимое.

TypeError: Ошибка # 1009: невозможно получить доступ к свойству или методу с нулевым значением ссылка на объект. в header_text_fla :: MainTimeline / loaderComplete ()

var myEvent:Event;
var myParams:LoaderInfo;
function loaderComplete(myEvent:Event)
{
if(this.loaderInfo.parameters.text1 != null)
{
Text1.text=this.loaderInfo.parameters.text1 as String;
}
if(this.loaderInfo.parameters.text2 != null)
{
Text2.text=this.loaderInfo.parameters.text2 as String;
}
if(this.loaderInfo.parameters.text3 != null)
{
Text3.text=this.loaderInfo.parameters.text3 as String;
}
}

function useParams()
{

}

var myLoaderInfo=new Object();
myLoaderInfo.myParamsLoaded=false;
myLoaderInfo.loaderComplete=loaderComplete;
myLoaderInfo.useParams=useParams;

this.loaderInfo.addEventListener(Event.COMPLETE, myLoaderInfo.loaderComplete );

Ответы [ 3 ]

1 голос
/ 30 июля 2011

Я решил с помощью try catch. Вот код

try
{
    Text1.text=this.loaderInfo.parameters.text1 as String;
    Text2.text=this.loaderInfo.parameters.text2 as String;
    Text3.text=this.loaderInfo.parameters.text3 as String;
}
catch(error:Error)
{
    trace("Error");
}
0 голосов
/ 29 июля 2011

Проблема может заключаться в том, что вы используете функцию временного объекта (myLoaderInfo) в качестве обработчика событий. Поскольку объект является временным (или, по крайней мере, кажется, что он находится в приведенном выше коде), и событие отправляется асинхронно, сборщик мусора может очистить экземпляр myLoaderInfo перед вызовом функции, делая его пустым и вызывая ошибку при вызове функции обратного вызова. называется.

Попробуйте сделать ваш myLoaderInfo параметром класса:

var myEvent      : Event;
var myParams     : LoaderInfo;
var myLoaderInfo : Object;//added myLoaderInfo here

function loaderComplete(myEvent:Event)
{
    if(this.loaderInfo.parameters.text1 != null)
    {
        Text1.text=this.loaderInfo.parameters.text1 as String;
    }
    if(this.loaderInfo.parameters.text2 != null)
    {
        Text2.text=this.loaderInfo.parameters.text2 as String;
    }
    if(this.loaderInfo.parameters.text3 != null)
    {
        Text3.text=this.loaderInfo.parameters.text3 as String;
    }
}

function useParams()
{
}

myLoaderInfo = new Object();
myLoaderInfo.myParamsLoaded = false;
myLoaderInfo.loaderComplete = loaderComplete;
myLoaderInfo.useParams      = useParams;

this.loaderInfo.addEventListener(Event.COMPLETE, myLoaderInfo.loaderComplete );

Таким образом, сборщик мусора не очистит его.

0 голосов
/ 29 июля 2011

:-) Хороший код.

Пожалуйста, напишите:

function loaderComplete(myEvent:Event)
{
if (!this.loaderInfo) trace ("no loader info");
if (!this.loaderInfo.parameters) trace ("no loader info parameters");
if (!Text1) trace ("no Text1");
if (!Text2) trace ("no Text2");
if (!Text3) trace ("no Text3");
...
YOUR CODE HERE
...

Это даст вам объект, который не инициализирован и отвечает за выданную ошибку.

...