首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建私有var yada:随便了;取决于xml计数

创建私有var yada:随便了;取决于xml计数
EN

Stack Overflow用户
提问于 2010-01-30 03:22:54
回答 1查看 106关注 0票数 0

我正在尝试声明私有变量,这些变量将在我的flex mxml主应用程序中的其他地方使用。但我只需要在我的xml文件中当变量的数量相等时才创建变量。

我的xml代码片段如下所示:

代码语言:javascript
复制
<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>

我的主要flex mxml文件如下所示:

代码语言:javascript
复制
//------------------------------------------------------------------------------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;

当我的xml可能只有500个位置时,我不想声明2000个私有变量。

下面是如何将xml添加到我的flex应用程序中:

代码语言:javascript
复制
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之前并没有真正定义它。

代码语言:javascript
复制
//------------------------------------------------------------------------------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加载完成后再声明这些变量?

EN

回答 1

Stack Overflow用户

发布于 2010-01-30 03:48:36

你有没有想过一系列的位置。你的2000个变量让我头疼。

Location.as:

代码语言:javascript
复制
package my.locations.util    {
    public class Location {
        public var latitude;
        public var longitude;
        public var name;
        //... others, constructor
    }
 }

代码语言:javascript
复制
 var locations:Array = [];
 var locationsXML:XML = //...
 for (var locationXML:XML in locationsXML.location) {
     var location:Location = new Location(locationXML.latitude, locationXML.longitude, ...);
     locations.push(location);
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2164541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档