2010-12-08 4 views
1

저는 플래시가 처음이에요. 간단한 버튼으로 무대를 연다. Instance Nameinit입니다. 내 .as 스크립트 (MainTimeline)의 무대에서 외부에서 액세스 할 수 있습니다 : 나는 MyFlash_fla.MainTimelinestage 재산, Class을 설정하여 .as에 연결하고코드의 unfindable 한 부분에 "변수 *가 정의되지 않았습니다"?

./Project/MyFlash.fla

./Project/MyFlash_fla/MainTimeline.as

. 버튼의 init 레이블은 속성에서 "ENTER"로 설정됩니다.

그러나이 오류를 건너오고 있습니다 : ReferenceError: Error #1065: Variable init is not defined.at MyFlash_fla::MainTimeline/__setProp_init_Scene1_Layer1_0()at MyFlash_fla::MainTimeline(). 나는

이 내 현재 코드입니다 .. 본 적이없고, __setProp_init_Scene1_Layer1_0()을 찾을 수 있어요 적이 :

function MainTimeline(){ 
     this.init.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 
    function begin(event:Event){ 
     addFrameScript(0, frame1); 
    } 

하는 기능은 간단하다; MOUSE_UP 일 때 begin을 실행하십시오. 언급 된 오류가 속성에서 설정 한 내 사전 설정을로드하는 데 문제가있는 것만 제외하면 모든 것이 올바르게 작동하는 것 같습니다. 내가 설정 한대로 ENTER 대신 레이블이 Label으로 변경됩니다. 나는 그것이 그 오류와 관련이 있다고 믿지만, 나는 그 영역에 접근하는 방법이나 이것을 고치는 방법을 모른다. 현재 그럴듯한 해결 방법은 코드에서 레이블을 설정하는 것입니다. 더 많은 단추, 체크 상자 등을 포함시키려는 계획에 따라 수행하지 않는 것이 좋습니다. 그러면보기가 번거롭 게됩니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?

+0

FYI : "도달 할 수없는 코드"는 일반적으로 절대 실행될 수없는 코드를 의미하며 소스를 찾을 수없는 코드는 아닙니다. –

+0

알아.상충되는 말씨, 나는 짐작한다. 그러나 그것은 마음에 나온 첫 번째 묘사이다. 편집 중. :) – Salt

+0

왜 대답 한 사람이 표시 될 때 정확히 같은 질문을합니까? ... 가능한 복제본 [외부 .as 스크립트에서 버튼 인스턴스를 호출하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/4382734/how-do-i-call-a-button-instance-in -an-external-as-script) – PatrickS

답변

0

즉, "init"인스턴스가 인스턴스화되지 않았으며 __setProp_init_Scene1_Layer1_0()이 장면 코드 뒤에 있으므로 걱정하지 마십시오. 패널 &가 추가

당신은 직접 무대에 추가하는 대신에이 중 하나를 초기화 변수

 //assuming your button is a MovieClip 
    private var init:MovieClip; 

    function MainTimeline() 
    { 
     init.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 

를 선언하거나 수, 속성에서 "ActionScript에 내보내기"를 사용하여 자신의 클래스에 연결 코드 측에서. 일반적으로이 방법을 사용하면 표시 객체를보다 잘 제어 할 수 있으므로이 방법을 선호합니다. 물론 무대에 추가되지 않으므로 인스턴스 이름이 필요하지 않습니다! 그것은 종종 방법 이름으로 클래스에 사용 된 이후, 버튼에 가장 적합한 이름이 될 수 없습니다 "init을"보조 노트에

 private var button:MovieClip = new init(); 

    function MainTimeline() 
    { 
     button.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 

... 다른 독자들에 대한

+0

두 번째 솔루션을 시도 할 때 버튼의'Class' 속성을'ctrl'으로 설정하고 다음 코드를 설정합니다. var button : MovieClip = new ctrl(); function MainTimeline() { button.addEventListener (..., ...); } ... 위와 같이 버튼을 누르면 오류는 표시되지 않지만 깜박입니다. : S 'MovieClip'으로 설정됩니다. – Salt

+0

다른 MovieClip으로 디버깅 해보십시오. 모양을 그려서 MovieClip으로 변환 한 다음 두 번째 솔루션을 시도하십시오. 작동하는 경우 버튼에 문제가 있습니다. – PatrickS

+0

패트릭에게 진심으로 감사드립니다. 나는 녹색 사각형을 만들고'Symbol'로 변환하여'testing'의'Class'를 주었고'flash.display.MovieClip'에'Base Class'를 미리 설정했습니다. 내 코드 내에서,'var test : MovieClip = new testing();'과'MainTimeline','test.visible = false;'내에 속성을 제어 할 수 있는지 테스트 해 보았습니다. 시도를 위해서 행운을 들이지 않고 이벤트 리스너를 추가하려고했습니다. 오류는 없지만 아무 것도 발생하지 않습니다. – Salt

0

, 위의 오류 아마 당신이 S/설정/AS3.0 설정 (오른쪽 상단 에 렌치 모양) 다음

및 게시

  • 파일로 이동해야한다는 것을 의미 et "자동으로 스테이지 인스턴스 선언" 확인란을 선택합니다. 또한 "strict mode"를 선택하면 파일에 오류가 계속 발생합니다.

관련 문제