Access of Undefined Property as3
I know there are a number of posts dealing with this issue. But, I'm still not understanding it.
I keep getting a "1120: Access of undefined property CSSloader." in the following script:
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);
}
}
}
} I've tried adding the code within loadCSS to both loadXML and xmlLoaded, but get the same error.
Any help would be GREATLY appreciated. Thanks.
You declared CSSloader in the function loadCSS, but you get the error in the function xmlloaded, which is a different scope. If you want CSSloader to be scoped for all functions, you'll have to declare it as a variable outside these functions - by convention at the top. (Unfortunately you have omitted the context of this code, but I assume this is inside a class?).
精彩评论