PDA

View Full Version : Access of undefined property?



garethhall
December 30th, 2008, 03:30 PM
To all the Pro's out there please help if you can.

I am getting an error "Access of undefined property"

The code returning the error is
var fileTypes:FileFilter=new FileFilter(file_Filter1,file_Filter2)
It does not want to expect my 2 vars file_Filter1 and file_Filter2

I have confirmed the both var file_Filter1 and file_Filter2 is correct, when you trace them you will get the following result
trace(file_Filter1) //result of trace // FileTypes (*.jpg, *.psd, *.pdf,)
trace(file_Filter2) //result of trace // *.jpg; *.psd; *.pdf

Here is what I dont get this returns the error
var fileTypes:FileFilter=new FileFilter(file_Filter1,file_Filter2)
and this does not
var fileTypes:FileFilter=new FileFilter(FileTypes (*.jpg, *.psd, *.pdf,),*.jpg; *.psd; *.pdf;)

Can anyone explain why I can use the vars to do the work, this is critical in this project, you might have notice I am getting the file extentions from the xml doc.

Any help would be great :)


var gallery_xml:XML
//var xmlReq:URLRequest = new URLRequest("../xmlExt.php");
var xmlReq:URLRequest = new URLRequest("../xmlExt.xml");

var xmlLoader:URLLoader = new URLLoader();

xmlLoader.load(xmlReq);
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

function xmlLoaded(event:Event):void{

var myExtXml:XML = new XML(xmlLoader.data);

var myExt:XMLList = myExtXml.item.(@id == "ext");

var fTypes = "";
var f_Types = "";
for(var i:int = 0; i< myExt.length(); i++){
fTypes += '*'+myExt[i].label + ', ';
f_Types += '*'+myExt[i].label + '; ';
};
var file_Filter1 = "FileTypes ("+fTypes+")";
var file_Filter2 = f_Types;
trace(file_Filter1)
trace(file_Filter2)
};
//var fileTypes:FileFilter=new FileFilter("FileTypes (*.jpg, *.psd, )","*.jpg; *.psd; ");

var fileTypes:FileFilter=new FileFilter(file_Filter1,file_Filter2)

// Add both filter types to an array
var allTypes:Array=new Array(fileTypes);


// Set the FileReference name
var fileRef:FileReference = new FileReference();

// Add event listeners for your 2 buttons
browse_btn.addEventListener(MouseEvent.CLICK, browseBox);

// Function that fires off when the user presses "browse for a file"
function browseBox(event:MouseEvent):void {
fileRef.browse(allTypes);
}

mathew.er
December 30th, 2008, 06:28 PM
This is because the code gets executed before the xmlLoaded function... try moving the code there or putting it into another method that you can call from xmlLoaded.

garethhall
December 31st, 2008, 12:14 AM
Aaahhhh sometimes it just need fresh eyes :). Thank you thank you thank you, I cant believe I missed that :( You are the bomb