2011-04-10 2 views
0

업데이트 :매우 이상한 : 플래시 버그 나로드 된 SWF의 속성에 액세스하려면

내가 (MySWF (영화 클립에)) ID에 대한 액세스를 시도하지만 난 이상한 메시지 오류 얻을 :.

(1120) : 정의되지 않은 속성 aslider에 대한 액세스

은 MySWF.init에 정의되어 있습니다. 내가 (MySWF (movieClip))을 제거하면 id 프로그램이 완벽하게 작동합니다!

addEventListener (Event.ADDED_TO_STAGE, init)를 추가 한 경우와 같이 특히 이상하지 않습니까? MySWF 생성자에서 aslider가 무대에 있는지 확인합니다. 메인에서

: MySWF에서

private var idMySWF:int; 
    public function loadMySWF(event:MouseEvent) { 

    idMySWF = 1; 
    var myLoader:Loader = new Loader(); 
    myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); 
    myLoader.load(new URLRequest("MySWF.swf"));   
    myZone.addChild(myLoader); 

    }  

    public function loadComplete(evt:Event):void { 

    var movieClip:MovieClip; 
    var myLoader:Loader; 
    myLoader = evt.currentTarget.loader as Loader; 

    movieClip = MovieClip(loader.content); 
    myLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadComplete); 
    myLoader = null 
    movieClip.addEventListener(CustomEvent.ON_CUSTOM_EVENT,OnCustomEvent);  
    (MySWF(movieClip)).id = idMySWF; 

    } 

:

private var _id:int; 

    public function get id():int { 
     return _id; 
    } 

    public function set id(__id:int):void { 
     _id = __id; 
    } 

    public function MySWF() { 

    addEventListener(Event.ADDED_TO_STAGE, init); 

    } 
    public function init(e:Event):void { 

    removeEventListener(Event.ADDED_TO_STAGE, init);  
    aslider.addEventListener(SliderEvent.CHANGE,OnSliderEventChange); 

    } 

답변

1

*** 업데이트 *** 그래, 원래 (아래) 답변에 맞지 않았어. FLA를 직접 살펴본 후 디자인 타임에 스테이지에 배치 된 객체의 미리 정의 된 인스턴스와 결합 된 문서 클래스 사용 문제가 있음을 알 수 있습니다. Flash는 런타임시 이러한 인스턴스에 대한 참조를 자동으로 생성/선언하므로 문서 클래스를 통해 직접 액세스 할 수있는 유일한 방법은 다음과 같습니다.

var myObject : Slider = this [ "sliderNameInFlashIDE"] ;

다음은이 문제와 IDE에서이 자동 선언 기능을 사용하지 않도록 설정해야하는 다른 대안에 대한 전체 기사입니다. 그래서 기본적으로 지금까지 그것은 당신의 코드에 적용

http://blog.ickydime.com/2008/07/as3-notes-automatically-declare-stage.html

:

public function OnCustomEvent(event:CustomEvent): void { 

     this[\"labelValue\"].text = event.value + \"\"; 
     var cEvent: CustomEvent; 
     cEvent = new CustomEvent(CustomEvent.ON_CUSTOM_EVENT); 
     cEvent.value = event.value; 
     this.dispatchEvent(cEvent); 

} 

public function init(e:Event):void { 

    removeEventListener(Event.ADDED_TO_STAGE, init); 

    this.addEventListener(CustomEvent.ON_CUSTOM_EVENT,OnCustomEvent); 
    this[\"aslider\"].addEventListener(SliderEvent.CHANGE,OnSliderChange); 

} 

가 null 객체 참조를 가지고있는 문제를 해결합니다.

또한 내가 복사하여 붙여 넣은 코드 중 프로젝트의 성격에 대해 너무 많이 드러내는 경우 알려 주시면보다 일반적인 코드로 변경할 수 있으므로 요점은 여전히 ​​있지만 자연이 모호해집니다.

*** 원본 질문 *** 개체가 존재하기 전에 개체 참조가 존재하므로 액세스되지 않은 오류가 발생합니다. 부모에 대한 표시 목록이 생성 될 때 객체가 생성됩니다. Event에 대한 이벤트 리스너를 추가해야합니다.ADDED_TO_STAGE를 MySWF 생성자에 보내고 해당 이벤트 리스너 (SliderEvent)를 콜백 내부에 ADDED_TO_STAGE에 추가합니다.

http://www.emanueleferonato.com/2009/12/03/understand-added_to_stage-event/

http://forums.adobe.com/message/3464172 (랜디에 의해 특히 포스트) :

"표시 객체입니다"생성자 코드가 맞았다 그러나이 이벤트를 추가하는 것이 안전 때 시간이있을 때 주로 "준비. "Add to Stage"에 대한 리스너와 핸들러에서 모든 것이 초기화 될 것입니다. 예를 들어이 이벤트가 발생한 후 loaderInfo에서 Flash Vars를 가져 오는 것이 좋습니다. 내가 수정

+0

안녕하세요, 기사를 읽었으며 addEventListener (Event.ADDED_TO_STAGE, init)를 추가했습니다. MySWF 생성자에서 여전히 동일한 오류가 발생합니다. 다른 오류가 있습니까? – user310291

+0

FLA를 게시 할 수 있습니까? 아니면 여기에 게시하는 데 어려움이 있다면 여기에서 nfo를 기반으로 저의 프로필을보고 저에게 연락하여 문제를 파악하고 다른 사람들이 알 수 있도록 전체 솔루션을 게시 할 수 있습니다. 너의 전화. :) –

+0

나는 당신의 프로필에 감사합니다. – user310291

0

로 시작하려면, 당신의 라인 :

idMySWF: 1; 

나는 당신이 그것을 시도 할 것으로 예상 생각하지 않습니다 대신 등호 사용 :

idMySWF = 1; 
+0

확인 감사는 mistypo했지만, 그래서 여전히 – user310291

+0

1120에 대한 업데이트 덕분에 볼 작동하지 않습니다 – user310291

1

라인 myZone.addChild(loader);myZone.addChild(myLoader);이어야합니다. 제가 짐작할 때 짐을 넣기가 너무 빠르면 myLoader.load(new URLRequest("MySWF.swf")); 전에 넣으십시오!

+0

aslider 정의되지 않은 속성의 액세스 나는이 감사하지만 아직도 원인을 고정 : 그것은 :) – user310291

+0

볼 작동하지 계속 업데이트 덕분에 약 1120 : 정의되지 않은 속성 aslider 액세스 – user310291