2010-04-24 3 views
2

다음은 흥미로운 아키텍처 쿼리입니다. 서버 (Node.js 아래)와 클라이언트 (Actionscript 3로 작성된 Flash 10 앱)에서 실행해야하는 코드 조각이 있습니다. 이 코드는 대부분 매우 복잡한 객체 조작이며, API 호출을하지 않으며 두 문맥에서 모두 잘 작동합니다.Actionscript3 및 Javascript에서 코드 사용

지금까지 프로젝트는 데모 일 뿐이므로 코드를 복사하여 두 위치에 모두 붙여 놓았습니다. 그러나 이것으로 앞으로 나아가는 것이 꽤 흥미로울 것입니다.

그럼 어떻게할까요?

  • 내가 읽고은 .js 파일로 유용한 일을 할 수있는 플래시 SDK를 얻을 수있는 쉬운 방법 (IDE를하지 않고 구축 할 수있다)이 없도록 가정합니다.

  • 내 생각에 .js 파일을 가져 와서 ActionScript 래퍼에 배치하는 코드 생성기를 작성할 수 있습니다.

놓친 부분이 있습니까?


명백한 대답을 선점하기 위해 HaXe와 같은 크로스 플랫폼 언어에 대해 알고 있습니다.

+0

#include check file extension? – drawnonward

+0

@drawnonward 아니, 그렇지 않습니다. AS 3.0에서는 지시어가 해쉬 기호없이 작성되지만 (AS 1.0 및 2.0과 반대). –

답변

3

econding JS URL을 할 수 있습니다. 그냥 빨리 아주 간단한 테스트 : 명령 줄에서 컴파일하려면

function run() { 
    alert("run"); 
    var obj = { 
     a : 'hello', 
     b : 4.5, 
     c : false 
    }; 
    loop(obj); 
} 

function loop(obj) { 
    for (var field in obj) { 
     alert(obj[field]); 
    }  
} 

을 some.js

package { 
    import flash.display.Sprite; 
    import flash.text.TextField; 

    public class Main extends Sprite { 


     private var _alertTxt:TextField; 

     include "some.js" 

     public function Main() { 
      _alertTxt = new TextField(); 
      _alertTxt.multiline = true; 
      _alertTxt.height = 400; 
      _alertTxt.width = 400; 
      addChild(_alertTxt); 
      run(); 
     } 

     public function alert(msg) { 
      _alertTxt.text += msg + "\n"; 
     } 
    } 
} 

(다른 옵션을 추가 할 수 있습니다) :

mxmlc -strict=false Main.as 

당신이 만약 strict를 false로 설정하지 않으면 형식 선언이 없기 때문에 컴파일되지 않습니다.

+1

Gadzooks, Juan. 그 존재조차 알지 못했습니다. '심각한'개발 언어가 된 v.3에서 ActionScript에 도착했습니다. 그리고 나는 그것이 포함 된 것을 결코 알지 못했기 때문에 추측합니다. 완벽한 솔루션입니다. 감사. 나는 매우 간단하다는 것을 매우 기쁘게 생각합니다. – Ian

+1

30 초 후, 그것은 매력처럼 작동하고 있습니다 ...이 모든 경우에 다른 사람이 발생하는 경우를 대비 한 것입니다. 제 컴파일의 대부분을 엄격하게 차단하고 싶지는 않습니다. 그래서이 래핑 된 구성 요소를 SWC 파일로 컴파일하여 나중에 최종 컴파일에 연결합니다. 그렇게하면 느슨한 검사로는 다른 곳에서해서는 안되는 것을 빠져 나갈 수 없습니다. – Ian

+1

차가움. 예, include는 비밀 기능이 아니지만 일반적으로 사용되는 것처럼 겉으로 드러나지는 않습니다. 그러나 일부 시나리오에서는 매우 유용 할 수 있기 때문에 AS 3.0에서 제거하지 않았기 때문에 기쁩니다. –

0

왜 ExternalApi가 아닌가요?

나는 서버

는 코드의 어떤 종류에 실행하는 데 필요한 코드의 조각을 가지고? js가 ExternaAPI, fcommand 또는 javascript보다 처리 할 수있는 경우 : "alert ('');" 그것을 처리 할 수있는 ...

how to inject javascript code in url to insert iframe in existing page이 가능한 방법은 래퍼 ActionScript 코드에 포함 사용

+0

좋은 제안, 고마워,하지만 불행히도 내 유스 케이스에서는 작동하지 않을 것이다 (SWF가 항상 브라우저에서 실행되는 것은 아니다). – Ian

관련 문제