2014-10-25 6 views
0

я получает данные из XML и хранить его в array.I закодирована как нижеInvalidCastException: Невозможно отлит из исходного типа типа назначения

Private var dataarray=new Array(); 
private var timearray=new Array(); 
private var distancearray=new Array(); 
private var detailStock : String; 
private var distancedata : String; 
private var timedata : String; 
private var datalist : String; 
private var data : String; 

function readMe() { 

var filepath : String = Application.dataPath+"/XmlDocs/"+"Stock"+".xml"; 
var xmlDoc : XmlDocument = new XmlDocument(); 
if(File.Exists (filepath)) 
{ 
    xmlDoc.Load(filepath); 
    var Stock_list : XmlNodeList = xmlDoc.GetElementsByTagName("Stock"); 

    for(var i : int = 0; i < Stock_list.Count;i++) 
    { 
     // getting child nodes of stock, like Rice and Wheat in a list 
     var StockItems_list : XmlNodeList = Stock_list.Item(i).ChildNodes; 


     // running a loop through all items present in the stock 
     for(var j : int = 0; j < StockItems_list.Count; j++) 
     { 
     //Debug.Log("StockItems_list count"+StockItems_list.Count); 
      // taking the properties of a item into a list like Price and Quantity 
      var StockItemsProperties_list : XmlNodeList =      StockItems_list.Item(j).ChildNodes; 

      for(var k : int = 0; k < StockItemsProperties_list.Count; k++) 
      { 

      //Debug.Log("length....."+ StockItemsProperties_list[k].InnerText); 
      data=StockItemsProperties_list[k].InnerText+"\t"; 
      //Debug.Log(data); 




      /*--------Pushed the full data into an array-----------*/ 
      // dataarray=new Array(); 
      dataarray.Push(data); 
     //Debug.Log("Elements in the array"+dataarray); 





      } 
      //var StockItemsProperties_list : XmlNodeList =StockItems_list[j]. 



      // Getting Names of Items like Rice and Wheat 
      detailStock+="\n"+StockItems_list[j].Name+"\n"; 
      // We know that Price is stored at Oth element of StockItemsProperties_list 
      detailStock+=StockItemsProperties_list[0].Name+" "; 
      // Inner Text of StockItemsProperties_list[0] (Price node) Contains the money 
      detailStock+=StockItemsProperties_list[0].InnerText+" "+"Rs"+"\n"; 
      // And Quantity at 1st element of StockItemsProperties_list 
      detailStock+=StockItemsProperties_list[1].Name+" "; 
      // Inner Text of StockItemsProperties_list[1] (Quantity node) Contains the Quantity in Kg 
      detailStock+=StockItemsProperties_list[1].InnerText+" "+"Kg"+"\n"; 
      //Debug.Log("distance"+StockItemsProperties_list[0].InnerText); 
      //Debug.Log("seconds"+StockItemsProperties_list[1].InnerText); 



distancedata=StockItemsProperties_list[0].InnerText; 
distancearray=new Array(); 
distancearray.Push(distancedata); 
//Debug.Log("distance Array............ "+distancearray); 


/*--------------Print the time into time array -----------------*/ 
timedata=StockItemsProperties_list[1].InnerText; 
timearray=new Array(); 
timearray.Push(timedata); 
// Debug.Log("time Array............ "+timearray); 


/*-------------Distance and time from both array array ------------------*/ 
for(var d=0;d<distancearray.length;d++) 
{ 

for(var t=0;t<timearray.length;t++) 
{ 
// Debug.Log("distance : " +distancearray[d] +"   "+"time: "+timearray[t]+"\n"); 
transform.position-=new Vector3(0,distancearray[d],0); 
Debug.Log(transform.position); 
} 
} 

С выше кодом Iam, способным печатать значение.

Но я хочу переместить свой объект на основе значений, хранящихся в дистанционном диапазоне. transform.position- = new Vector3 (0, distancearray [d], 0);

код для перемещения объекта получает по указанному ниже за исключением

InvalidCastException: Cannot cast from source type to destination type. 
Boo.Lang.Runtime.RuntimeServices.CheckNumericPromotion (IConvertible convertible) 
Boo.Lang.Runtime.RuntimeServices.CheckNumericPromotion (System.Object value) 
Boo.Lang.Runtime.RuntimeServices.UnboxSingle (System.Object value) 
xmlDataReader.ReadXml() (at Assets/script/xmlDataReader.js:286) 
xmlDataReader.OnGUI() (at Assets/script/xmlDataReader.js:141) 

Что будет проблема issue.Any с переменной типа декларации? Пожалуйста, помогите мне

+0

Не похоже, что это имеет отношение ко мне javascript. – jfriend00

+0

Мое предположение - это машинопись, а не обычный Javascript. – Barmar

+0

@Barmar это javascript – user1509674

ответ

0

Это UnityScript.

Проблема, вероятно, вызвана тем, что distrontata являются String, поэтому distancearray является массивом String, а не int.

Попробуйте это:

private var distancedata : int; 
 

 
... 
 

 
distancedata = parseInt(StockItemsProperties_list[0].InnerText);

Хотя уродливы XML также может быть причиной.