2011-12-10 2 views
2

무슨 일이 일어나는지 알 수 없습니까? 타임 라인에 다른 클래스를 가져 와서 사용하면 좋지만이 클래스는 큰 문제가됩니까? 내 서버에서 XML 데이터를 파싱 중이며 오류가 발생합니다.As3 타임 라인에서 클래스 참조하기

타임 라인 참조 및 사용 :

 import networkScores; 

    var network:networkScores = new networkScores(); 
    addChild(network); 

    score1Textfield.text = network.score1.toString(); 

클래스 정의 :

package 
{ 
      import flash.net.URLLoader; 
      import flash.net.URLRequest; 
      import flash.events.Event; 
      import flash.display.MovieClip; 

     public class networkScores extends MovieClip 
     { 
       public var myXML:XML, myXMLNames:XML; 
       public var xmlLoaderScores = new URLLoader(); 
       public var score1:int; 

       public function networkScores() 
       { 
        xmlLoaderScores.addEventListener(
           Event.COMPLETE, xmlLoadedScores); 
        xmlLoaderScores.load(new URLRequest("pathtoxmlfile")); 
       } 

       public function xmlLoadedScores(e:Event):void 
       { 
         myXML = new XML(e.target.data); 
         var qName1:QName = new QName(
          "http://www.w3.org/2005/Atom", "score1"); 
         score1 = myXML.descendants(qName1)[0].toString(); 
       } 

     } 

    } 

오류 나는 점점 오전 :

장면 1, 레이어 '작업', 프레임 4 , Line 149 1119 : 고정 유형 networkScores를 사용하여 참조를 통해 가능한 정의되지 않은 속성 score1에 액세스합니다.

1067 : 관련없는 유형의 networkScores 유형의 값을 암시 적으로 강제 변환합니다. flash.display : DisplayObject.

전송 문제입니까?

어떻게 해결할 수 있습니까?

+0

당신이 어떤 오류를 가지고있는 라인 말해 수 :

그것을위한 코드는 다음과 같이 보일 수 있습니다

코드가 보여 수정 됨? – apscience

+0

죄송합니다. 예, addChild (네트워크); 줄이 1067 오류를 수신하고 network.score1.toString(); 1119 오류가 발생했습니다. – AgnosticDev

+0

코드가 정상적으로 보입니다. 플래시가 클래스 networkScores의 정의를 찾을 수 없다고 생각합니다. networkScores.as 파일은 어디에 있습니까? – Louis

답변

1

타임 라인이 문서 클래스를 참조하지 않아야합니다. 문서 클래스는 모든 것을 제어해야합니다. 스테이지에 추가 된 오브젝트가 언제 알려 지는지 (스테이지에 추가하기 위해 듣기 등) 몇 가지 방법이 있습니다. 객체가 추가되었고 에 반환 된 것으로 확인되면 문서 클래스에 노출 된 하위 객체의 변수를 채울 수 있습니다. 더 자세한 내용은 http://www.developria.com/2010/04/combining-the-timeline-with-oo.html 블로그 게시물과 여기에 제공된 코드 http://flexdiary.blogspot.com/2010/04/sample-code-for-oop-timeline-insideria.html을 확인하십시오.

package { 
    public class Main extends MovieClip { 
     private var _stageInstance:StageInstance; 
     private var _score:String; 
     private var _loader:URLLoader;//hold loader in memory so it doesn't gc before it returns 
     //by using a getter/setter pair, we know when Flash has added the instance to the stage 
     public function get stageInstance():StageInstance{ 
      return _stageInstance; 
     } 
     public function set stageInstance(value:StageInstance):void { 
     _stageInstance = value; 
     if (_stageInstance != null && _score != null) { 
      _stageInstance.score = _score; 
     } 
     } 
     public function onScoreLoaded(e:Event):void { 
     myXML = new XML(e.target.data); 
     var qName1:QName = new QName("http://www.w3.org/2005/Atom", "score1"); 
     _score = myXML.descendants(qName1)[0].toString(); 
     if (stageInstance != null) { 
      stageInstance.score = _score; 
     } 
     } 
     public function Main() { 
     _loader = new URLLoader(); 
     _loader.addEventListener(Event.COMPLETE, onScoreLoaded); 
     _loader.load(new URLRequest('pathToXML')); 
     } 
    } 

} 

package { 
    public Class StageInstance extends MovieClip { 
     pubic var score1TextField:TextField;//populated by Flash Player 
     private vare _score:String; 
     //note how the setter here is doing something useful, not just passing through the value 
     public function get score():String { 
      return _score; 
     } 
     public function set score(value:String):void { 
      _score=value; 
      score1TextField.text=score; 
     } 
     public function StageInstance() { 
      super(); 
     } 

    } 

} 
+0

그렇지만 주요 문서 클래스는 데이터 클래스와 타임 라인 클래스 간의 관계를 조율해야합니다. 타임 라인 객체가이를 처리하려고해서는 안됩니다. –

+0

예. 모범 사례를 염려하는 유형과 어떤 방식 으로든 작동하도록 신경 쓰는 유형의 두 가지 유형의 개발자가 있습니다. 나는 StackOverflow와 같은 포럼에서 적어도 베스트 프랙티스가 무엇인지 알고 싶어한다고 가정하는 경향이있다. –

+0

안녕하세요. 귀하의 의견을 보내 주신 모든 분들께 감사드립니다. AsTheWormTurns와 마찬가지로 networkScores.as 파일을 타임 라인의 라이브러리에서 링크 클래스 식별자로 참조하려고하지 않습니다. 전에 수업이 이런 방식으로 참조 된 것을 보았습니다. 수업이 Amy가 말하는 방식을 참조한 것을 보았습니다. 나는 어느 것이 옳은지 알지 못했고 두 가지 방법을 모두 사용할 수 있다고 가정했습니다. Thanks Scientific – AgnosticDev

관련 문제