访问未定义属性as3

时间:2011-03-16 21:02:31

标签: css actionscript-3

我知道有很多帖子处理这个问题。但是,我仍然不理解它。

我不断收到“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和xmlLoaded,但是得到了相同的错误。

任何帮助都会非常感激。感谢。

1 个答案:

答案 0 :(得分:2)

您在函数loadCSS中声明了CSSloader,但是您在xmlloaded函数中得到了错误,这是一个不同的范围。如果您希望CSSloader的范围适用于所有函数,则必须将其声明为外部这些函数的变量 - 按照惯例在顶部。 (不幸的是你省略了这段代码的上下文,但我认为这是在一个类中?)。