문제

나는 Actionscript와 조금 놀고 있습니다. 내가 원하는 것은 문자열에서 수학적 함수를 표시 할 수 있다는 것입니다.

예를 들어 내 작업 파이썬 스크립트에서 나는 그런 일을한다 :

formula = 'x**2 + 3*x'
for x in range( 0, 100 ):
    y = eval( formula )
    graph.display( x, y )

이것을 ActionScript로 포트하고 싶지만 버전 3 이후 더 이상 평가가없는 것 같습니다. 어쨌든 내 함수 값을 어떻게 계산할 수 있습니까?

도움이 되었습니까?

해결책

귀하의 경우에도 작동 할 수있는 것은 대신 JavaScript Eval을 사용하는 것입니다. 다음과 같은 것을 사용할 수 있습니다.

var result = ExternalInterface.call(myEvalFunctionInJS,formula)

수학 기능을 평가합니다.

JavaScript가 ActionScript에 매우 가깝기 때문에 이것은 다소 쉽고 유용한 해결 방법입니다.

외부 인터페이스 호출을 루프 안에 넣으면 느리게 될 수 있습니다. 이를 피하기 위해 루프를 JavaScript로 쓸 수 있습니다. (실제 HTML 페이지를 터치 할 필요가 없도록 AS3 내부에 전체 JavaScript를 작성할 수도 있습니다.)

편집 : 여기에 대한 링크가 있습니다.

http://www.actionscript.org/resources/articles/745/2/javaScript-and-vbscript-injection-in-actscript-3/page2.html

다른 팁

당신은 써야 할 것입니다 eval 당신 자신. 문자열을 구문 분석하고 올바른 연산자를 호출해야합니다.

여기'SA 링크를 시작합니다.

타마 린 프로젝트에는 ECMAScript가 있습니다 파서 ES4로 작성되었습니다. 이것도 시도하십시오.

"실제 HTML 페이지를 터치 할 필요가 없도록 AS3 내부에 전체 JavaScript를 작성할 수도 있습니다." 링크 / 튜토리얼이 있습니까? - 오만

AS와 JS는 모두 동일한 ECMAScript 표준을 기반으로합니다. 따라서 AS3의 문자열을 컨테이너에 전달하고 JS를 사용하는 경우 eval 이 문자열에서는 잘 작동해야합니다.

방금이 질문을 발견하고 여기서 거의 똑같은 대답을 깨달았습니다. https://stackoverflow.com/a/11460839/1449525

나 자신을 역설적으로 말하면 확실히 사용할 수 있습니다 D.Eval, as3eval, 또는 웹 페이지에서 실행 중이라고 가정 할 때 (현재 선택된 답변에서 볼 수 있듯이) 외부 인터페이스. 그러나, 당신이 정말로 필요한 것 같습니다. 수학 (MathParser에 대한 자세한 정보)

MathParser를 사용하는 방법은 다음과 같습니다.

package {
    import bkde.as3.parsers.*;
    import flash.display.Sprite;
    public class MathTest extends Sprite {
        public function MathTest() {
            var parser:MathParser = new MathParser([]);
            var compiledObj:CompiledObject = parser.doCompile("(10/3)*4+10");
            var answer:Number = parser.doEval(compiledObj.PolishArray, []);

            var xyParser:MathParser = new MathParser(["x", "y"]);
            var xyCompiledObj:CompiledObject = xyParser.doCompile("(x/3)*y+10");
            var xyAnswer:Number = xyParser.doEval(xyCompiledObj.PolishArray, [10, 4]);
        }
    }
}

나는 외부 인터페이스가 잘 작동한다고 확신하지만, 크로스 언어 커뮤니케이션 (특히 효율성과 보안 측면)과 어색한 특성에 대한 개인 예약이 있습니다. 나는 대부분의 상황에서 전적으로 함유 된 동일한 언어 솔루션이 일반적으로 바람직하다고 생각합니다.

조금 늦었지만 참고로 D.Eval 라이브러리는 귀하가 요구하는 일을합니다.

http://www.riane.com/products/deval/

그것은 무료이며 나에게 잘 작동하지만 소스와 함께 제공되지 않습니다. 이 질문에서 대안 내장 또는 소스를 사용할 수있는 솔루션을 찾고 있습니다.

포트 타마 린에게 플래시를하기 위해 포트 타마 린에게 버려진 프로젝트도 있습니다.

http://eval.hurlant.com/

더 많은 진전이 이루어지면 굉장하지만 지금은 호기심처럼 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top