【问题标题】:How to use a Boolean values (true, false) from xml in as3?如何在as3中使用来自xml的布尔值(true,false)?
【发布时间】:2015-03-19 02:54:02
【问题描述】:

我正在将 xml 文件中的一些数据作为值加载到 flash 项目中。数字运行良好,但布尔值(真、假)不起作用!

xml 数据:

<?xml version="1.0" encoding="utf-8"?>
<SETTINGS>
<SET VALUE="2">Size</SET>
<SET VALUE="false">Lock</SET>
</SETTINGS>

as3 代码:

var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("settings.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void
{
    myXML = new XML(e.target.data);

    size_ns.value = myXML.SET[0].@VALUE;
    lock_cb.selected = myXML.SET[1].@VALUE;
    trace(myXML.SET[1].@VALUE);
};

输出:假

但 lock_cb.selected 仍然正确! 谢谢

【问题讨论】:

  • 我不明白当您在 XML 文件中将其设置为“true”时,输出怎么可能是“false”?
  • 抱歉是假的,我已经改了..

标签: xml actionscript-3 flash


【解决方案1】:

字符串 false 的计算结果为布尔值 true,您可以通过将其与字符串 true 进行比较将其转换为布尔值。

试试

lock_cb.selected = myXML.SET[1].@VALUE === 'true';

【讨论】:

  • 感谢您的回复,但是我无法在flash文件中设置值..它应该是用户的设置文件!
【解决方案2】:

我相信您在使用 XML type conversion 时遇到了问题。请记住,所有 E4X 查询都将返回 XMLXMLList 对象,并且只能隐式转换为 Strings。换句话说,VALUE 是字符串 "false" 而不是布尔值 false

但是,您可以通过比较将其转换为布尔值:

var value:Boolean = myXML.SET[1].@VALUE == true;

这是因为the == operator will convert both values to strings when one operand is an XML attribute,所以"true" == "true"变成true,而"false" == "true"变成false。换句话说就是这样:

var value:Boolean = myXML.SET[1].@VALUE == "true";

数字起作用的原因是因为将String 分配给Number 将隐式地将字符串解析为数字。

是的,隐式转换会使事情变得混乱。

最后一点,这可能超出了您现在可以或想要做的事情,但JSON 支持布尔值、数字和空值,因此您不会遇到同样的问题。

【讨论】:

  • JSON 是另一种数据格式。它比 XML 更新,并且由于其简单性而广受欢迎。 Flash 支持原生 JSON 解析和编码,类似于 XML(尽管它没有 E4X 查询语法)。 help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/…
  • 非常感谢,我认为这是一个很长的故事,我的意思是 JSON,我必须弄清楚但不是现在:P
  • JSON 需要 5 分钟才能计算出来
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-26
  • 2013-10-17
  • 2015-09-06
  • 1970-01-01
相关资源
最近更新 更多