2009-11-01 87 views
0

在項目中使用FlashDevelop並切換到FDT/Eclipse。我正在通過代碼中的數百個警告進行排序。在AS3中投射JSON/XML

不少關係到這個項目正在使用的XML和JSON語法。在下文中,我不知道是什麼鑄就包含數據的XML作爲使其由編譯器識別

例子:

public function convertXMLToAssets(file:XML):void 
{ 
    var data:XML = new XML(file.data); 
    var id:int = data.item.id; 
    //etc 
} 

//gives Warning: Could not resolve variable (may be a dynamic member) data at line 59 

回答

0

好,因爲一切都在E4X或者是XML對象或字符串,我非常懷疑data.item[i].id可以是一個數字。如果ID是浮點數,則使用parseFloat(data.item[i].id),如果它只是int使用+data.item[i].id

編輯:是否有多個<item/>?如果是這樣,我想你想要data..item[0].id。這裏的一些東西,我想你可能也想嘗試:

+0

如果我解析或轉換float/int/Number,那麼「item」仍然不是可識別的可解析變量,並且會發出警告(僅限使用FDT/Eclipse) – 2009-11-01 17:42:21

+0

@ cat-biscuit:您可以編輯原始帖子顯示如果您嘗試進行解析/轉換,錯誤是什麼? – 2009-11-01 19:48:23

1

文件:String不具有 「數據」 屬性(String .data無效)。它是一個URLLoader嗎?在這種情況下,將其更改爲file:URLLoader,或其它任何東西(Object可能?)。 另外,我沒有看到「我」變量的聲明,它是一個類成員?

+0

啊,我的錯。我將編輯示例代碼。這是我的問題......人們在使用JSON時如何避免這種情況我想知道如何將其轉換爲XMLnode?也許我應該忽略這個警告 – 2009-11-01 18:54:09

1

這不是一個警告,這是一個真正的錯誤......字符串沒有一個屬性數據,因爲礁提到......我想知道你是如何使用FD進行編譯的......你是否編譯過與CS3或與Flex SDK?

它應該像

var data:XML = XML(file); 
var id:int = data.item.id;/*if your xml looks something like 
      <%ROOT%> 
       <item> 
        <id>%SOMEINT%</id> 
       </item> 
     </%ROOT%>*/ 

的方式,用JSON,用as3corelib,這將會是

var data:XML = JSON.decode(file); 
var id:int = data.item.id;/*if your JSON looks something like 
     { item : { id: %SOMEINT% } } 

JSON和XML有極其不同的語義,並XMLNode,你提到的是ActionScript 2 Legacy,你不應該使用...沒有冒犯,但我認爲你應該看看JSON或XML/E4X教程,因爲你編碼和你說什麼,不知何故使我相信VE,你不明白一些基本的東西,如一般過程:

源字符串---解析/解組--->中介對象樹---穿越--- >提取的數據

既不可以你在源串直接操作,也不是所述中間對象樹自由可交換,從而遍歷也取決於所使用的數據的編碼格式(也可以不遍歷解析的JSON與E4X,但隨後再次JSON是語義上等同的表示on的ActionScript值)

+0

我對這個錯誤表示歉意,我不能很好地檢查它! 我在比較XML和JSON /對象數組等等方面的重點是鑄造一個編譯器不知道存在的參數/變量。由於警告出現在像Tweener這樣的常用庫文件中,我使用了很多,我不必擔心太多,但想知道是否有另一種方法來投射XML或對象。在此期間,我將嘗試更改FDT中的設置 – 2009-11-03 23:38:22

0

有一個技巧,我用來避免這類警告。

而不是使用符號data.item.id您可以使用數據[「項目」] [「身份證」]

是的,這是一個有點難看,但與符號你沒有得到警告。

不要濫用該表示法,因爲這樣可以避免任何編譯時檢查。只有在你確定它是正確的地方使用它,否則不能擺脫警告。例如,使用XML數據,就像你在這裏展示的那樣。