2011-03-16 115 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