0
我想聲明將在我的flex mxml主應用程序中的其他地方使用的私有變量。但我只需要在我的xml文件中創建變量時創建相同的數字。創建私人var yada:無論如何;取決於xml計數
我的XML片斷如下:
<POIs>
<location>
<name>jane</name>
<lat>12345</lat>
<long>12345</long>
<iconFile>jane_icon.gif</iconFile>
<imageFile>jane_img.swf</imageFile>
<motion>no</motion>
</location>
<location>
<name>john</name>
<lat>23456</lat>
<long>23456</long>
<iconFile>john_icon.gif</iconFile>
<imageFile>john_img.swf</imageFile>
<motion>no</motion>
</location>
</POIs>
我主要的柔性MXML文件看起來是這樣的:
//------------------------------------------------------------------------------0
private var locPointMarker0:PointMarker;
private var locPointMarker0_lat:Number;
private var locPointMarker0_long:Number;
//------------------------------------------------------------------------------1
private var locPointMarker1:PointMarker;
private var locPointMarker1_lat:Number;
private var locPointMarker1_long:Number;
//------------------------------------------------------------------------------2
private var locPointMarker2:PointMarker;
private var locPointMarker2_lat:Number;
private var locPointMarker2_long:Number;
//------------------------------------------------------------------------------3
private var locPointMarker3:PointMarker;
private var locPointMarker3_lat:Number;
private var locPointMarker3_long:Number;
我不想申報2000私有變量時,我的XML可能只有500個地點。
這裏是我的XML是如何被添加到我的Flex應用程序:
public function getXMLData():void
{
var locXMLLoader:URLLoader = new URLLoader(locXMLURL);
locXMLLoader..addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(e:Event):void
{
try
{
locXML = XML(locXMLLoader.data);
locXML.location.(parseLocXML(
valueOf().name.toString(),
parseFloat(valueOf().lat.toString()),
parseFloat(valueOf().long.toString()),
valueOf().iconFile.toString(),
valueOf().imageFile.toString(),
valueOf().motion.toString()));
} catch(e:Error)
{
trace("XML Load Error: " + e.message)
return;
}
}
}
public function parseLocXML(nodeName:String, lat:Number,
long:Number, iconFile:String,
imageFile:String, motion:String):void
{
if (XMLpCounter==0)
{
addMarkers(); ///this is just one of the functions that requires the private vars
}
XMLpCounter++;
}
我嘗試了類似下面的代碼,但由於locXML沒有真正定義它,直到解析這是行不通的。
//------------------------------------------------------------------------------1
if(locXML.location.length()>=1){
trace("1 has been added as a variable");
private var locPointMarker1:PointMarker;
private var locPointMarker1_lat:Number;
private var locPointMarker1_long:Number;}
//------------------------------------------------------------------------------2
if(locXML.location.length()>=2){
trace("2 has been added as a variable");
private var locPointMarker2:PointMarker;
private var locPointMarker2_lat:Number;
private var locPointMarker2_long:Number;}
在聲明這些變量之前是否可以等到xml加載?
我不知道很多關於陣列。我會研究這個,看看我是否無法實現它的工作。謝謝......實際上,我也不完全理解課程。我是Flash編程的新手......承擔了一個大型項目並一直在學習。 – Phil 2010-01-29 20:31:38
你會幫我一個忙,並重命名這些,以便他們匹配我的XML?我不知道如何將此代碼應用於我的目的。陣列對我來說沒有意義。 – Phil 2010-01-29 21:20:37
這是正確的答案。任何時候你發現自己在寫「myvar1」。 「myvar2」,你應該爲它創建一個值對象並將它們存儲在一個數組中。否則,如果您需要添加9個「經緯度/名稱」三聯體?你必須編輯你的課程,而你不想這麼做:) – 2010-02-05 11:11:51