Проблема с провайдером данных - PullRequest
0 голосов
/ 02 августа 2011

При выполнении следующего кода, я получил сообщение об ошибке, как показано ниже,

function urlLoader_complete(evt:Event)
{
    XMLdata=(evt.target.data).toString();
    XMLdata=XMLdata.split("&lt;").join("<");
    XMLdata=XMLdata.split("&gt;").join(">");
    xml=new XML(XMLdata);
    **fnctn();**
}

function fnctn() 
{
    var tp:int = bulb1 + bulb2 + bulb3 + bulb4;
    if(tp == 1)
    {
        **gep.addItem(new Object());**
        gep[gep.length-1].voltage1 =evt.result.Array.Voltage.Val;
        gep[gep.length-1].current1 = evt.result.Array.Current.Val;
        gep[gep.length-1].voltage2 = 0;
        gep[gep.length-1].current2 = 0;
        gep[gep.length-1].voltage3 = 0;
        gep[gep.length-1].current3 = 0;
        gep[gep.length-1].voltage4 = 0;
        gep[gep.length-1].current4 = 0;
    }

Ошибка

ReferenceError: Error #1065: Variable evt is not defined.

at vi_fla::MainTimeline/fnctn()[vi_fla.MainTimeline::frame2:449]

at vi_fla::MainTimeline/urlLoader_complete()[vi_fla.MainTimeline::frame2:436]

at flash.events::EventDispatcher/dispatchEventFunction()

at flash.events::EventDispatcher/dispatchEvent()

at flash.net::URLLoader/onComplete()

Две строки с ошибками отмечены в приведенном выше коде ... что будет причиной этой ошибки?

*** UPDATE **** ****

Теперь я изменил код, как показано ниже.

функция fnctn (evt: Event)

{ var tp: int = bulb1 + bulb2 + bulb3 + bulb4;

if (tp == 1)

{

   ChartDataProvider1.push(xml.Value.Array.Voltage.Val.text())

ChartcategoryNames.push();

trace("value= "+xml.Value.Array.Voltage.Val.text())

}

}

Теперь при запуске ошибки нет, но значение трассировки не показывает значений. Это показывает как Значение =

Как решить эту проблему?

******* UPDATE *** ***********

Я изменил код, как показано ниже

var ChartcategoryNames: Array = new Array ();

var ChartDataProvider1: Array = new Array ();

var lineArray1: LineSeries = new LineSeries ();

if (tp == 1)

{

                            ChartDataProvider1.push(xml.graph.Voltage.text());

            ChartcategoryNames.push();

            trace("hi= "+xml.graph.Voltage.text());

                         yAxis = new NumericAxis();

            yAxis.maximum=10;

            yAxis.minimum=0;

            yAxis.majorUnit=2;

            Exp_Content.input_mc.in_graph.verticalAxis=yAxis;

            //Exp_Content.input_mc.in_graph.dataProvider=ChartDataProvider1

                        lineArray1.dataProvider=ChartDataProvider1;

}

Теперь трассировка hi показывает правильные значения, что также видно в ChartDataProvider1. Но lineArray1 не имеет значений ... Пожалуйста, предложите решение этой проблемы.

Ответы [ 3 ]

3 голосов
/ 02 августа 2011

Как говорится, в функции fnctn вы используете переменную с именем evt, которая не определена.

evt - это объект входящего события в urlloader_complete, поэтому он является локальным для этой функции.Либо поместите весь свой код в обработчик событий, либо передайте объект события в fnctn.

function urlLoader_complete(evt:Event)
{
    XMLdata=(evt.target.data).toString();
    XMLdata=XMLdata.split("&lt;").join("<");
    XMLdata=XMLdata.split("&gt;").join(">");
    xml=new XML(XMLdata);
    fnctn(evt);
}

function fnctn(evt:Event) 
{
    ...
2 голосов
/ 02 августа 2011

Вы должны передать ваше мероприятие:

fnctn(evt);
...
function fnctn(evt : Event); 
0 голосов
/ 04 августа 2011
function urlLoader_complete(evt:Event)
{
  XMLdata=(evt.target.data).toString();
  XMLdata=XMLdata.split("&lt;").join("<");
  XMLdata=XMLdata.split("&gt;").join(">");
  xml=new XML(XMLdata);
  fnctn(evt);
}

function fnctn(evt:Event) 
{
   var tp:int = bulb1 + bulb2 + bulb3 + bulb4;
   if(tp == 1)
   {
     **gep.addItem(new Object());**
     gep[gep.length-1].voltage1 =evt.result.Array.Voltage.Val;
     gep[gep.length-1].current1 = evt.result.Array.Current.Val;
     gep[gep.length-1].voltage2 = 0;
     gep[gep.length-1].current2 = 0;
     gep[gep.length-1].voltage3 = 0;
     gep[gep.length-1].current3 = 0;
     gep[gep.length-1].voltage4 = 0;
     gep[gep.length-1].current4 = 0;
  }
}

попробуйте, надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...