2014-07-04 2 views
3

나는 이것이 내가 찾고자하는 종류의 이상한 것이라는 것을 알고있다. 그러나 나는 이것을하기 위해 노력하는 이유에 관해서 조금 뒷 이야기를하고있다 :As3 - SWF에서 실행중인 IDE의 코드를 확인하는 방법

나는 온라인 멀티 플레이 플래시 게임을 만들고있다. 나는 as3 작성 및 그래픽 작업을 위해 플래시 빌더 및 플래시 전문가를 사용하고 있습니다. 나는 또한 (궁극적 인 Visual Studio에서 playerio에 의해) 개발 서버를 실행 중입니다. 이 온라인 멀티 플레이어 게임을 테스트하는 방법은 플래시 전문가와 한 번 플래시 빌더에서 swf를 한 번 실행하는 것입니다. 그들은 둘 다 똑같은 액션 스크립트 3 코드와 플래시 무비 클립에 연결됩니다 (swc 파일을 통해). 플래시 프로와 플래시 빌더는 각각 출력 영역이 적기 때문에이 설정이 맘에 들지만 각 사용자별로 디버깅 출력을 별도로 볼 수 있습니다.

의 정확한 동일한 코드를 실행하는 두 개의 SWF 만

, 나는 그들이 다르게 행동하려는 문제. 예를 들어, 플래시 프로 버전의 이미지에 대한 참조를 가져옵니다

_gameOverPopup = this["gameOverPopup"]; 

및 플래시 빌더 사용자는이처럼 가져옵니다뿐만 아니라 다른 많은 차이가 있습니다

_gameOverPopup = new GameOverPopup; 

. 예를 들어, 나는 자동으로 인증하고 단지에서 사용자 이름과 암호를 하드 코딩하여 각각의 경우에 다른 사용자로 로그인 그래서 지금 내 코드는 다음과 같이 같습니다.

if (inFlashBuilder) { 
    // this only happens when debugging in Flash Builder 
    authenticateWith("billyboy", "Secret123"); 
} 
else { 
    // this only happens when debugging in Flash Professional 
    authenticateWith("joeshmoe", "password1"); 
} 

이 잘 작동하지만 수동으로 변경하고를 내 코드에서 inFlashBuilder 변수. 나는 기본적으로 그냥 클래스의 상단에 그것을 가지고 :

private var inFlashBuilder:Boolean = true; 

은 내가을 컴파일하기 전에 수동으로 거짓마다에 충실에서 변경해야합니다. 오 이런, System에 메소드가 있거나이 플래그 변수를 제어 할 수있는 메소드가 있었으면 좋겠습니다. 경우에만 ...

답변

4

당신은 컴파일러 상수를 사용하고자합니다. FlashPro는 실제로 IDE와 관련하여 이미 FlashPro를 설정합니다. AS3에서 다음과 같이 액세스 할 수 있습니다 (이것은 참 또는 거짓 생산할 예정) :

CONFIG::FLASH_AUTHORING 

을 그래서, 당신은이 작업을 수행 할 것입니다 :

if (CONFIG::FLASH_AUTHORING) { 
    // this only happens when debugging in Flash Professional 
    authenticateWith("joeshmoe", "password1"); 
} 
else { 
    // this only happens when debugging in Flash Builder 
    authenticateWith("billyboy", "Secret123"); 
} 

같은 일정을 설정하는 것이 좋습니다 플래시 빌더에서 값을 false로 설정하십시오. 플렉스-config.xml에,이 추가 : 당신이 http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7abd.html

+0

감사합니다.플래시 빌더에서 플렉스를 사용하지는 않지만 프로젝트 -> 속성 -> 액션 스크립트 컴파일러 -> 액션 스크립트 컴파일러 인수로 이동하여 config 상수를 추가하고 다음을 입력하십시오. -define = CONFIG :: IN_FLASH_AUTHORING, false –

0

하지 않으려면 :

<compiler> 
    <define append="true"> 
     <name>CONFIG::FLASH_AUTHORING</name> 
     <value>false</value> 
    </define> 
</compiler> 

플래시 빌더에서이 작업을 수행하는 방법에 대한 자세한 내용을 보려면이 링크를 참조하십시오 두 번 빌드하면 swf를 다른 이름으로 복사하는 빌드 후크가있을 수 있습니다. 그런 다음 코드에서 this.loaderInfo.loaderURL을 확인하고 그런 식으로 논리를 구별 할 수 있습니다.

if(this.loaderInfo.loaderURL.indexOf("second.swf")) 
    // do alt logic 
관련 문제