2010-02-04 2 views
1

이상한 질문 일 수 있지만 효율적으로 (아마도 네임 스페이스를 사용하고 계신가요?) ActionScript (액션 스크립트) 프로젝트의 개발자 당 클래스마다 다른 기본 변수가 있는지 궁금합니다. 우리가 현재 일련의 플래시 게임을하고 있기 때문에 나는 물어 본다. 각각은 쉘 컨테이너에 의해로드됩니다. 셸은로드 할 게임에 대한 플래시 var를받습니다. 우리의 개발 환경 (플래시 /에 FlashDevelop)에서,이 더 FlashVars에없는, 그래서 AS의 상수는 더 flashvar를가 없을 때로드 할 게임 정의여러 개발자가있는 기본 변수

/** Game to load during debugging if the game param is not set via flashvars. */ 
public static const DEFAULT_GAME:String = "gameName"; 

그래서 각 개발자가 작업중인 게임이 변경 . 그러나 저장소 (svn) 변경을 커밋 할 때 개발자가 변경하거나 변경 사항을 취소해야하며 개발자가 다른 사람이 변경하면 각 개발자가이를 게임으로 변경해야합니다.

Flash IDE에서 Flashvars와 유사한 기본 매개 변수 또는 사용자 별 파일을 지정하여 코드가 해킹 디버그 바를 수정하지 않도록 할 수 있는지 궁금해 할 때 궁금합니다. 나는 Flex에서 html 템플릿에 flashvars를 설정할 수 있음을 알고 있으며 각 개발자는 자신의 제작 폴더와 svn : ignore를 가질 수 있습니다. 아마도 각 개발자가 사용자 매개 변수를 정의하는 커밋되지 않은 XML 파일을 만들게할까요? 나 donno, 어떤 아이디어?!

답변

2

FLASH IDE 내부에서 조건부 컴파일을 사용할 수 있습니다.

package{ 

    import flash.display.Sprite; 

    public class Main extends Sprite { 

     CONFIG::USER_A 
     private static const PATH:String="user_a_path"; 
     CONFIG::USER_B 
     private static const PATH:String="user_b_path"; 

     public function Main(){ 
      trace("current path >",PATH); 
     }  

    } 

} 

그 다음 플래시 IDE 컴파일 옵션 내부 2 개 상수를 추가한다 : 여기

는 코드 exemple 인 스위칭

CONFIG::USER_A 
CONFIG::USER_B 

설정할 값 false 또는 사용자 true

외 정보 here

+0

정말요?! 와우, 나는 몰랐다. 이것이 효과가 있다면, 당신은 승자입니다. – typeoneerror

+0

예 : 잘 작동합니다.) 조건부 컴파일과 관련된 adobe 도움말 링크를 답변에 추가했습니다. – OXMO456

+0

아, CS4! 안타깝게도 현재 CS3를 사용하고 있습니다. 그래도 팁. 나는 그것이 내가 물었던 것에 대한 최선의 해결책이라고 생각합니다. 그래서 당신이 이깁니다. – typeoneerror

5

개발자 별 설정 파일이 작동하는 경향이 있습니다.

.default 또는 .sample 또는 파일 이름에 추가 된 항목이있는 저장소의 "기본"구성을 갖고 있으며 개발자가 처음 체크 아웃하면 해당 파일을 복사하고 확장명을 제거한 다음 많이 사용자 지정합니다 그들이 원하는대로 다른 사람에게 영향을 미치지 않습니다.

더 좋은 방법이 있습니까? 아마. 그러나 나는 그것을 발견하지 못했다.

+0

+ 1에는 SVN에서 무시되는 개발자 별 파일이 있습니다. 멋지고 쉽습니다. –

2

데이터를 Local Shared Object에 저장하면 각 개발자는 해커없이 자신의 기본값을 가질 수 있습니다. 로컬로만 액세스 할 수있는 양식을 작성하고이를 사용하여 기본값을 보거나 편집하십시오. 데이터를 LSO에 저장하십시오. 앱 시작시 FlashVars가 있는지 확인하고,없는 경우 LSO를 확인합니다.

+0

좋은 해결책! 그것을 시도 할 것이다. – typeoneerror

+0

이것이 훌륭한 AIR 응용 프로그램이라고 생각합니다! – typeoneerror

0

두 가지 해결책이 있습니다. 프로그래밍 관점에서 좋은 점은 "LocalConfig.as"라는 별개의 정적 클래스를 갖는 것입니다.

원본 .as 파일. (의사 코드)가 될 것이다 :

import common.LocalConfig; 
... 
public static const DEFAULT_GAME:String = LocalConfig.gameName; 
... 

} 

이의 만들기 위해 정적 클래스를 사용하자 쉽게 (의사 코드) :

// Static class: 
package 
{ 
    public class LocalConfig 
    { 
     public static var gameName:String = "Game1"; 


     public function LocalConfig() 
     {} 
    } 
} 

, 당신은 당신의 일반/LocalConfig 폴더에 그것을 다음 단계를 확인하여 프로젝트를 소스 제어에 넣습니다. 그런 다음 로컬 시스템에서 체크 아웃을 무시하도록 설정하면 로컬 사용자 시스템에 존재하지 않습니다.

마지막으로 소스 제어 프로세스와 격리 된 프로그래머의 로컬 "global include/common /"폴더에 넣으십시오.

편집 :

내 싱글 톤 클래스 참조를 삭제. 정적 클래스를 사용하는 것으로 충분합니다.

+0

클래스가 Singleton 일 필요가 있다고 생각하는 이유와 그 속성이 정적 인 이유가 확실하지는 않지만 클래스에 대해 권장합니다. –

+0

당신 말이 맞아요. 이 경우에는 변수가 상수 일 때 싱글 톤은 의미가 없습니다. – jonycheung

1

그럼 당신이 할 수있는 FDT 과 :

확인 "컴파일시 후 열기 URI"(디버그 구성 패널)

및 설정 URI :

bin/main.swf?test="this is a test"&test2="this is a test" 

이는 역할을합니다 flashVar.

+0

아, 꽤 좋을 것 같습니다. FDT로 컴파일해야하고 플래시가 아니야. 이 디버그 구성 패널은 어디에 있습니까? – typeoneerror

+0

아 참 으세요. 나는 FDT가 다른 것이라고 생각했다. 그럴 필요 없어. 그래도 좋은 기능입니다. Flex도 비슷한 기능을 가지고 있습니다. – typeoneerror