Вы делаете ту же самую очень простую ошибку, которую допустили в одном из своих предыдущих вопросов, и это показывает, что вы еще не очень хорошо понимаете, как выполняется ваш код, в каком порядке и т. Д. Я прошел через это и избавился от ошибок, но код ничего не делает, кроме отображения некоторых чисел. Я не знаю, если это цель, хотя.
Прежде чем я вставлю код, несколько заметок на вашем. С одной стороны, это еще раз ужасно грязно. Я правильно отформатировал, но больше не буду делать это с вашим кодом. В мире проще всего поддерживать код в хорошем формате, и это действительно облегчает жизнь других людей при попытке его интерпретировать. Я действительно настоятельно рекомендую вам начать.
Во-вторых, проблема с вашим кодом и ошибками, которые вы получали, были результатом попытки получить доступ к содержимому переменных, которые вы еще не установили. Основным виновником был ваш объект myXML, к которому вы пытались обратиться в incrementCounter еще до того, как запустили функцию processXML. Это довольно просто, и вы должны узнать, как выполняется код, чтобы избежать подобных проблем. Кроме того, я бы не стал помещать объявления переменных между функциями, если вы кодируете прямо на временной шкале, это может и будет ужасно сбивать с толку. Поместите все объявления вверху, затем вызовите некоторую функцию, которая запустит все, а ваши функции будут ниже. Я изменил ваш код, чтобы отразить этот совет.
Наконец, эти типы ошибок («не может получить доступ к свойству или методу с нулевым значением» и т. Д.) Обычно очень легко диагностировать с помощью ограниченного отладчика Flash. Запустите «Debug Movie» из меню «Отладка» во Flash. Преимущество отладчика в том, что он не только покажет вам ошибку в окне вывода, но и остановится на строке кода, которая вызвала ошибку, так что вы сможете увидеть, в чем проблема. Есть даже окно, которое отображает все переменные в текущей области видимости, так что вы можете увидеть, какая из них равна нулю или что-то еще. Используя это, вы смогли бы исправить эти ошибки самостоятельно; Подобные ошибки типа обычно не подходят для размещения на форуме. Конечно, если вы действительно застряли, вы должны спросить, но это хорошо, чтобы узнать, как вы можете исправить эти вещи самостоятельно, и многие из ваших сообщений повторяют одни и те же вопросы.
В любом случае, этот модифицированный код:
//DynamicText 'Count'
var timer:Timer = new Timer(10);
var count:int = 0;
var fcount:int = 0;
//LOAD XML
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("time.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
/*------CHANGED TIMER VALUE WITH XML------*/
//timer.start();
function incrementCounter(event:TimerEvent)
{
//Before, this function was being called before
//you had read in your XML file, so myXML was empty.
count = myXML.COUNT.text();
count++;
fcount=int(count*count/1000);
mytext.text = formatCount(fcount);
}
function formatCount(i:int):String
{
var fraction:int = i % 100;
var whole:int = i / 100;
return ("0000000" + whole).substr(-7, 7) + "." + (fraction < 10 ? "0" + fraction : fraction);
}
//PARSE XML
function processXML(e:Event):void
{
myXML = new XML(e.target.data);
trace(myXML.COUNT.text());
trace(myXML.TIMER.text());
count = myXML.COUNT.text();
//I put this here, so that this timer's event will only be
//created once myXML is initialised with XML data.
timer = new Timer( Number(myXML.TIMER.text()) );
timer.addEventListener(TimerEvent.TIMER, incrementCounter);
timer.start();
}