在运行以下代码时,我收到如下错误消息,
function urlLoader_complete(evt:Event)
{
XMLdata=(evt.target.data).toString();
XMLdata=XMLdata.split("<").join("<");
XMLdata=XMLdata.split(">").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()
上面的代码中标出了有错误的两行......这个错误的原因是什么?
的 的 ** * 更新的 * < / EM> ** * ****
现在我修改了以下代码。
function 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())
}
}
现在运行时没有错误,但跟踪值没有显示任何值。它显示为Value =
如何解决这个问题?
的 的 ** * **** 更新的 < EM> * ** * ** * ** * ****
我修改了以下代码
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;
}
现在trace hi显示正确的值,这也可以在ChartDataProvider1.But中找到。但lineArray1没有任何值...请为此问题提出解决方案..
答案 0 :(得分:3)
如上所述,在函数fnctn
中,您使用的是名为evt
的变量,该变量未定义。
evt
是urlloader_complete
中的传入事件对象,因此该函数是本地的。将所有代码放在事件处理程序中,或将事件对象传递给fnctn
。
function urlLoader_complete(evt:Event)
{
XMLdata=(evt.target.data).toString();
XMLdata=XMLdata.split("<").join("<");
XMLdata=XMLdata.split(">").join(">");
xml=new XML(XMLdata);
fnctn(evt);
}
function fnctn(evt:Event)
{
...
答案 1 :(得分:2)
你需要传递你的活动:
fnctn(evt);
...
function fnctn(evt : Event);
答案 2 :(得分:0)
function urlLoader_complete(evt:Event)
{
XMLdata=(evt.target.data).toString();
XMLdata=XMLdata.split("<").join("<");
XMLdata=XMLdata.split(">").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;
}
}
试试这个,希望这会对你有帮助。