Eval Formel in AS3?
Spiele ich ein bisschen herum mit ActionScript. Was ich möchte ist, dass ich anzeigen kann, eine mathematische Funktion die aus einem string.
E. g. in meiner python-script, das ich sowas mache:
formula = 'x**2 + 3*x'
for x in range( 0, 100 ):
y = eval( formula )
graph.display( x, y )
Möchte ich port dieses ActionScript, aber es scheint, wie es ist nicht mehr eval seit der version 3. Wie kann ich berechnen, meine Funktion die Werte überhaupt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas, dass möglicherweise auch in Ihrem Fall, ist mit Javascript eval statt. Sie können so etwas wie:
var result = ExternalInterface.call(myEvalFunctionInJS,formula)
auswerten von mathematischen Funktionen.
Dies ist eine etwas einfache und nützliche Abhilfe javascript ist ganz in der Nähe von actionscript.
Wenn Sie mit der ExternalInterface-Aufruf innerhalb einer Schleife, kann es träge. Um das zu vermeiden, schreiben Sie die Schleife in javascript. (Sie können auch schreiben Sie den gesamten javascript in as3, so dass Sie sich nicht berühren musst, um den eigentlichen html-Seite.)
Bearbeiten:
Hier ist ein link für das.
http://www.actionscript.org/resources/articles/745/2/JavaScript-and-VBScript-Injection-in-ActionScript-3/Page2.html
Haben Sie zu schreiben eine
eval
selbst. Sie Parsen Sie den string und rufen Sie die richtigen Betreiber.Hier's einen link um Ihnen den Einstieg.
Den Tamarin-Projekt hat eine ECMAScript - parser geschrieben ES4. Versuchen Sie diese als gut.
Sowohl und JS basieren auf der gleichen ECMAScript-standard. Also, wenn Sie eine Zeichenfolge übergeben von AS3 zu einem container, und verwenden Sie JS ist
eval
auf diese Zeichenfolge, es sollte gut funktionieren.Ist nur aufgefallen, diese Frage und erkannte, antwortete ich fast genau das gleiche hier: https://stackoverflow.com/a/11460839/1449525
Paraphrase selbst, Sie können auf jeden Fall nutzen D. eval, AS3Eval, oder ExternalInterface (wie in der derzeit gewählte Antwort) angenommen, Sie laufen in eine web-Seite. Jedoch, es scheint, wie Sie wirklich brauchen, ist so etwas einfach MathParser (Mehr Infos über die MathParser)
Hier ist, wie Sie verwenden würden, die MathParser:
Ich bin mir sicher, dass ExternalInterface-Zeug funktioniert ganz gut, aber ich habe persönliche Vorbehalte gegen das Kreuz, Sprache, Kommunikation (vor allem in Bezug auf Effizienz und Sicherheit), als auch nur die unangenehme Natur es ist. Ich fühle mich wie eine ganz geschlossene, derselben Sprache, die Lösung ist in der Regel vorzuziehen, in den meisten Situationen.
Ein bisschen spät, aber für die Referenz, D. eval-Bibliothek macht das, was Sie fordern:
http://www.riaone.com/products/deval/
Es ist kostenlos und funktioniert gut für mich, aber nicht kommen mit der Quelle. Ich fand diese Frage auf der Suche nach einer alternative gebaut-in oder source-Lösung zur Verfügung.
Es ist auch ein scheinbar verlassenes Projekt port Tamarin zum Blitz selbst:
http://eval.hurlant.com/
Wäre genial, wenn mehr Fortschritte gemacht, aber es scheint wie eine Neugier für jetzt.