получить уравнение из XML, AS3 - PullRequest
0 голосов
/ 24 марта 2010

В моем swf есть переменная, я хочу получить XML. Это целочисленное значение в форме уравнения. Как получить значение XML для 'formatcount'?

Моя переменная

//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 голосов
/ 24 марта 2010

Вы, кажется, пытаетесь выполнить вычисление внутри вашего XML-файла, и хотя вы можете пытаться прочитать уравнение из XML, я не понимаю, почему это нужно делать на уровень самого файла XML. Было бы намного проще просто прочитать значения из файла XML и выполнить любые вычисления в вашей AS.

Если вы прочитали значение <COUNT> в переменную в своем коде (я предполагаю, что myXML.COUNT), то просто сделайте:

formatcount = count*count / 10000;

Где счет:

var count:Number = myXML.COUNT;

Как обычно с вашими вопросами, я не уверен, отвечаю ли я на ваш настоящий вопрос или я неправильно его истолковал. В любом случае, удачи.

0 голосов
/ 24 марта 2010

Вам потребуется написать или использовать парсер , который сможет анализировать и оценивать ваше выражение:

Проверьте, например, этот оценщик выражения:

На основании вышеуказанной библиотеки (не тестировалась):

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 );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...