从XML,AS3获得方程式

时间:2010-03-23 21:14:37

标签: xml flash actionscript-3

我的swf中有一个变量我想接收XML。它是一个等式形式的整数值。如何收到'formatcount'的XML值?

我的变量

//Variable I want to grab XML<br>
//formatcount=int('want xml value to go here');

formatcount=int(count*count/100);

路径

formatcount = myXML.FORMATCOUNT.text()

我的XML

<?xml version="1.0" encoding="utf-8"?>
   <SESSION>
      <TIMER TITLE="speed">1000</TIMER>
      <COUNT TITLE="starting position">10000</COUNT>
      <FORMATCOUNT TITLE="ramp">count*count/1000</FORMATCOUNT>
</SESSION>

2 个答案:

答案 0 :(得分:0)

您需要编写或使用能够解析和评估表达式的parser

检查示例this表达式的评估者:

基于上面的lib(未测试):

import it.sephiroth.expr.CompiledExpression;
import it.sephiroth.expr.Parser;
import it.sephiroth.expr.Scanner;
import flash.display.Sprite;


public class Example extends Sprite
{
  public function Example() {
    super();

    var myXML:XML=<SESSION>
      <TIMER TITLE="speed">1000</TIMER>
      <COUNT TITLE="starting position">10000</COUNT>
      <FORMATCOUNT TITLE="ramp">count*count/1000</FORMATCOUNT>
    </SESSION>;

    var expression: String = myXML.FORMATCOUNT.toString();
    var scanner: Scanner = new Scanner( expression );
    var parser: Parser = new Parser( scanner );

    var compiled: CompiledExpression = parser.parse();

    var count:Number=Number(myXML.COUNT.toString());

    var context: Object = {
      count:count
    };

    var formatcount:Number = compiled.execute( context );
  }
}

答案 1 :(得分:0)

您似乎正在尝试在XML文件中进行计算,而当您尝试从XML中读取方程时,我不明白为什么需要在XML文件本身的级别。从XML文件中读取值并在AS中进行任何计算都会容易得多。

如果您已将<COUNT>的值读入代码中的变量(我通过myXML.COUNT推测),那么就这样做:

formatcount = count*count / 10000;

计数在哪里:

var count:Number = myXML.COUNT;

与您的问题一样,我不确定我是否回答了您的实际问题,或者我是否误解了它。祝你好运。