2011-03-16 82 views
0

我知道有很多職位處理這個問題。但是,我仍然不理解它。訪問未定義的屬性as3

我不斷收到「1120:訪問未定義的屬性CSSloader」。在下面的腳本:

package as3.comp{ 

import flash.events.Event; 
import flash.events.ProgressEvent; 
import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.display.Loader; 
import flash.display.MovieClip; 
import flash.text.StyleSheet; 


public class cont extends MovieClip { 

    public var contentWidth:Number; 
    public var contentHeight:Number; 

    private var myXML:XML; 
    private var myLoader:URLLoader; 

    public function cont():void { 
     //Start 
    } 

    public function start():void { 
     myTooltip.start(); 
     myTooltip.followMouse(false); 
     myTooltip.hide(); 
     myWaiting.start(); 
     myWaiting.hide(); 
     myXML = new XML(); 
     myXML.ignoreComments=true; 
     myXML.ignoreWhitespace=true; 
     contentWidth=100; 
     contentHeight=100; 
     contentSpace.width=contentWidth; 
     contentSpace.height=contentHeight; 
     //myWaiting.hide(); //hide clock 
    } 

    public function loadMc(contentFile:String):void { 

     var pictLdr:Loader = new Loader(); 
     var pictURL:String=contentFile; 
     var pictURLReq:URLRequest=new URLRequest(pictURL); 
     pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoadedF); 
     pictLdr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preloader); 
     pictLdr.load(pictURLReq); 
     contentLoadMC.addChild(pictLdr); 

    } 

    private function imgLoadedF(event:Event):void { 
     myTooltip.hide(); 
     MovieClip(parent.parent).addContentMovie(this); 
     MovieClip(parent.parent).refresh(); 
    } 

    private function preloader(event:ProgressEvent):void { 
     var pcent:Number=event.bytesLoaded/event.bytesTotal*100; 
     myTooltip.show(""+int(pcent)); 
    } 

    public function loadCSS(event:Event):void { 
     var CSSloader:URLLoader = new URLLoader(); 
     var req_css:URLRequest = new URLRequest("example.css"); 
     CSSloader.load(req_css); 
     CSSloader.addEventListener("complete", loadXML); 
    } 

    public function loadXML(contentFile:String) { 
     var XML_URL:String=contentFile; 
     var myXMLURL:URLRequest=new URLRequest(XML_URL); 
     myLoader=new URLLoader(myXMLURL); 
     myLoader.addEventListener("complete", xmlLoaded); 
    } 

    private function xmlLoaded(event:Event):void { 
     myXML=XML(myLoader.data); 
     myXML.ignoreWhite = true; 

     var sheet:StyleSheet = new StyleSheet(); 
     sheet.parseCSS(CSSloader.data); 
     myHtmlText.styleSheet = sheet; 


     myHtmlText.htmlText="HERE" + myXML.pageTop; 
     myHtmlText.width=contentWidth-10; 
     myHtmlText.height=myHtmlText.textHeight+30; 
     myHtmlText.x=10; 
     myHtmlText.y=10; 
     contentSpace.width=contentWidth; 
     contentSpace.height=myHtmlText.height+4; 
     myWaiting.hide(); 
     MovieClip(parent.parent).addContentMovie(this); 
     MovieClip(parent.parent).refresh(); 
     myLoader.removeEventListener("complete", xmlLoaded); 

    } 

    public function loadContent(contentFile:String) { 
     if (contentFile.substr(-3)=="xml") { 
      myWaiting.show();//show clock 
      loadXML(contentFile); 
     } else { 
      myTooltip.show("0"); 
      loadMc(contentFile); 
     } 
    } 
} 

} 我已經嘗試添加loadCSS雙方的loadXML和時事大家談中的代碼,但得到了同樣的錯誤。

任何幫助將非常感激。謝謝。

回答

2

您在函數loadCSS中聲明瞭CSSloader,但是在函數xmloaded中出現了錯誤,這是一個不同的作用域。如果您希望CSSloader被限定爲所有函數,那麼您必須將其聲明爲以外的變量這些函數 - 按慣例在頂部。 (不幸的是,你忽略了這段代碼的上下文,但我認爲這是在一個類中?)。

+1

它在一個類中(我認爲,類是新的。)下面是完整的文件代碼: – MarkHFLA 2011-03-16 21:41:03

+0

我添加了上面完整的.as文件代碼。 – MarkHFLA 2011-03-16 21:42:21

+0

你嘗試過什麼布倫南建議?移動此行'var CSSloader:URLLoader = new URLLoader();'在這行下面'private var myLoader:URLLoader;'並將其設爲私有。 – Sam 2011-03-16 21:51:16