【问题标题】:Obtain value of xml node and manipulate it using as3获取xml节点的值并使用as3对其进行操作
【发布时间】:2013-11-11 09:11:21
【问题描述】:

我有一个包含四个节点的大型 XML 文件,使用它来创建交互式金字塔样式信息图。问题是当年份超过记录集中的特定值时,我希望能够操纵条形的颜色,所以这就是我到目前为止所得到的。

*xml 文件

<dataset>
<source></source>
<extent></extent>
<scaleFac></scaleFac>
<recordSet year="1982" popTotal="1544545">
<m> //Male
<rd></rd>
<f> //Female
<rd></rd>

动作脚本

加载 xml 文件后,我创建了一个变量来保存我需要使用的记录集年份值。

function onComplete(evt:Event):void {
xmlData = new XML(evt.target.data);
//populates metadat fields
seriesLength=xmlData.recordSet.length();
yearRecord=xmlData.recordSet.text();

然后我创建了一个名为修改年份的函数,这是我的问题所在。我尝试创建了一个简单的 if else 语句,当值(Year)大于 2013 时,我们应该更改条形的颜色。

function modifyYear(){

var mcF:MovieClip = new MovieClip();
var mcFGraphics:Graphics = mcF.graphics;

    if (yearRecord>2013){

        mcFGraphics.beginFill(0xFFFFFF,1);
    }

    else {
        mcFGraphics.beginFill(0x660066,1);
    }
};

我不确定如何检查年份记录是否超过特定值。我对 actionscript 很陌生,所以任何帮助都会非常有用。

【问题讨论】:

    标签: xml actionscript-3 flash actionscript


    【解决方案1】:

    我不确定我是否正确理解了您的问题。 如果您对如何从 xml 节点获取属性值感到困惑,那么这里是:

    var yearRecord:String = xmlData.recordSet.attribute("year");
    

    如果您不确定如何比较两个值,如果其中一个是字符串,另一个是整数,那么您必须将 String 转换为 int:

    if( int(yearRecord) > 2013 )
    {...}
    

    请尝试一下,如果您不明白,请不要犹豫。 祝你好运:)

    【讨论】:

    • 非常感谢,条件语句似乎工作正常。现在我还有一个问题,我希望条形图在 2013 年过去时改变颜色。所以上述工作应该使用 mcFGraphics.beginFill 还是还有更多。一种更简单的方法可能只是在这种情况下变得可见的注释,任何帮助都将不胜感激
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多