2011-08-02 54 views
0

在运行下面的代码,我得到了如下的错误信息,数据提供问题

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:事件)

{ 变种TP:整数= bulb1 + bulb2 + bulb3 + bulb4;

如果(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 Arra Y();

var ChartDataProvider1:Array = new Array();

var lineArray1:LineSeries = new LineSeries();

如果(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; 

}

现在跟踪喜显示正确的值,这也可见于ChartDataProvider1.But lineArray1不具有任何值...请为此问题提出解决方案..

+3

你真的想修改你的命名约定。 – Taurayi

回答

2

你需要通过周围的事件:

fnctn(evt); 
... 
function fnctn(evt : Event); 
3

正如它所说的,在函数fnctn中,您正在使用名为evt的变量,该变量未定义。

evturlloader_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) 
{ 
    ... 
+0

谢谢...我已根据您的答案修改了代码...现在,错误消息与ReferenceError类似:错误#1069:未在flash.events.Event上找到属性结果,并且没有默认值。 \t在vi_fla :: MainTimeline/fnctn()[vi_fla.MainTimeline ::帧2:451] \t在vi_fla :: MainTimeline/urlLoader_complete()[vi_fla.MainTimeline ::帧2:439] \t在flash.events ::此事件/ dispatchEventFunction() \t在flash.events::EventDispatcher/dispatchEvent() \t在flash.net::URLLoader/onComplete() –

+0

没有名为'result'在事件类属性:HTTP://帮助.adobe.com/EN_US/FlashPlatform /参考/动作/ 3 /闪光/活动/ Event.html。相反,您是否意味着要从您的XML对象中读取数据? – shanethehat

+0

XML文件的格式是为 16.042349 0.002555 ....所以不是evt.result.Array.Voltage.Val的;我该写什么? –

0
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; 
    } 
} 

试试这个,希望这会帮助你。

+0

@ Swati ..我试过这段代码仍然是相同的错误...错误#1069:在flash.events.Event找不到属性结果,并且没有默认值.....发生 –