Home Tutorials Forums Articles Blogs Movies Library Employment Press Buy templates

Go Back   ActionScript.org Forums > ActionScript Forums Group > ActionScript 3.0

Reply
 
Thread Tools Rate Thread Display Modes
Old 02-02-2009, 12:47 AM   #1
wvxvw
Holosuit User
 
wvxvw's Avatar
 
Join Date: Oct 2006
Location: Tel Aviv
Posts: 3,501
Send a message via ICQ to wvxvw
Default E4x Faq

As E4X is short, I'll try to follow it's spirit. We need this thread, so, why won't we have one?

Semantics:

@ - attribute accessor.
Example:
ActionScript Code:
var xml:XML = <node foo="bar"/>; trace(xml.@foo); trace(xml.@["foo"]); trace(xml["@foo"]);

. (dot) - child accessor.
Example:
ActionScript Code:
var xml:XML = <node><childNode/></node>; trace(xml.childNode.toXMLString());

.. (double dot) - descendants accessor.
Example:
ActionScript Code:
var xml:XML = <node>     <node>         <childNode/>     </node>     <childNode/> </node>; trace(xml..childNode.toXMLString());

:: (double colon) - namespace accessor.
Example:
ActionScript Code:
var xml:XML = <foo:node xmlns:foo="bar">     <childNode/> </foo:node>; var ns:Namespace = xml.namespace("foo"); trace(xml.childNode.toXMLString()); trace(xml.ns::childNode.toXMLString());

[] - (square brackets) - access dynamic property.
Example:
ActionScript Code:
var xml:XML = <node><childNode/></node>; trace(xml["childNode"].toXMLString()); trace(xml.*[0].toXMLString());

() (parentheses) - perform operation on every XMLList item.
Example:
ActionScript Code:
var xml:XML = <node>     <nodeA/>     <nodeB/> </node>; xml.*.(trace(toXMLString()));

{} (braces) - generate XML element.
Example:
ActionScript Code:
var xml:XML = <{"no" + "de"}/>; trace(xml.toXMLString());

* (asterisk) - substitute for XML element.
Example:
ActionScript Code:
var xml:XML = <node foo="bar" bar="foo"/>; xml.@*.(trace(toXMLString()));

Common Use Cases

Q: Why some nodes appear in trace() as empty strings, while I'm sure they are there?
A: Unless the node you trace() is a root node the following condition applies:
the trace() will use myXML.toString() method to output the child nodes of the XML passed as an argument. If XML passed for the argument has no children, the empty string will appear in the output. NOTICE: the text value of the node is also a child.
If you want to trace() the structure of the node and it's children you need to use myXML.toXMLString().
Example
ActionScript Code:
var xml:XML = <node>     <childNode>foo</childNode> </node>; trace(xml.childNode); trace(xml.childNode.toString()); trace(xml.childNode.toXMLString());
Q: Why my switch-case using XML attribute as a condition doesn't work?
A: You need to use explicit casting to convert attribute value to String. The type of the attribute value is XMLList.
Example
ActionScript Code:
var xml:XML = <node foo="bar"/>; switch (xml.@foo) {     case "bar":         trace("YES");         break;     default:         trace("NO"); // NO         break; } switch (String(xml.@foo)) {     case "bar":         trace("YES"); // YES         break;     default:         trace("NO");         break; } trace(typeof xml.@foo); trace(xml.@foo is XMLList); trace(describeType(xml.@foo).toXMLString());

Q: Why parsing with E4X is slow?
A: The most common mistakes when parsing:
You put the E4X expression inside the for / for-each for-in loop. E4X is a set of loops itself, thus, if you execute it in a loop it will multiply the execution time in geometric progression.
You used descendant accessor where you could avoid it.
Example
ActionScript Code:
var xml:XML = <node>     <childNode foo="bar"/>     <childNode bar="foo"/> </node>; // NO: for (var i:int; i < xml.*.length(); i++) {     trace(xml.*[i].@*.toXMLString()); } // YES: var list:XMLList = xml.*; var l:int = list.length(); for (var j:int; j < l; j++) {     trace(list[j].@*.toXMLString()); } // YES: xml.*.(trace(@*.toXMLString()));

Q: How do I convert XML to Array?
A: There're only two reason I've found so far to do so:
1. When you need to sort / change order of the nodes based on complex condition.
Example
ActionScript Code:
var listValues:XMLList = <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + <item>5</item> + <item>6</item>; trace(listValues.toXMLString()); var sortingArray:Array = []; var resultList:XMLList; listValues.(sortingArray.push(valueOf())); trace(sortingArray); sortingArray.sort(sortingFunction); trace(sortingArray); sortingArray.forEach(generateList); trace(resultList.toXMLString()); function sortingFunction(aXML:XML, bXML:XML):int {     if (Number(aXML) < Number(bXML)) return 1;     if (Number(aXML) == Number(bXML)) return 0;     return -1; } function generateList(val:XML, index:int, all:Array):void {     if (!resultList) resultList = XMLList(val);     else resultList += val; }
2. You need it to fit the input parameters of the functions you cannot change.
ActionScript Code:
var array:Array = [1, 2, 3]; var list:XMLList = <a>4</a> + <a>5</a>; var result:Array = []; list.(result.push(int(text()))); array = array.concat(result); trace(array);

Q: How do I parse XML, that has names containing ":" (colons)?
A: Colon divides the qualified XML name into 2 parts, first is the namespace prefix, last is the local name.
Example
ActionScript Code:
namespace foo = "bar"; var ns:Namespace = new Namespace("not-bar"); var xml:XML = <abc:def xmlns:abc="bar"         xmlns:ghi="not-bar"         ghi:someAttribute="attribute value">         <abc:foo ghi:someAttribute="value of attribute"/> </abc:def>; trace(xml.ns::["@someAttribute"]); trace(xml.foo::*.ns::["@someAttribute"]);

Q: How do I strip all namespaces from the XML?
A: Regretfully there's no way to do this using either AS XML API or E4X. Here's some string processing that accomplishes the same task. If you have a better suggestion on how to do this - please correct me:
Example
ActionScript Code:
var xml:XML = <foo:node xmlns="bar" xmlns:foo="foo">     <childNode foo:bar="foo:bar"/>     <a>foo:bar</a>     <foo:childNode bar="foo foo:bar"/> </foo:node>; var xmlSource:String = xml.toXMLString(); xmlSource = xmlSource.replace(/<[^!?]?[^>]+?>/g, removeNamspaces); xml = XML(xmlSource); function removeNamspaces(...rest):String {     rest[0] = rest[0].replace(/xmlns[^"]+\"[^"]+\"/g, "");     var attrs:Array = rest[0].match(/\"[^"]*\"/g);     rest[0] = rest[0].replace(/\"[^"]*\"/g, "%attribute value%");     rest[0] = rest[0].replace(/(<\/?|\s)\w+\:/g, "$1");     while (rest[0].indexOf("%attribute value%") > 0)     {         rest[0] = rest[0].replace("%attribute value%", attrs.shift());     }     return rest[0]; } trace(xml.toXMLString());

Q: How do I parse XML, that has names containing symbols that break E4X statements?
(Eg. XAML, hyphenated node names etc).
Example
ActionScript Code:
var xml:XML = <node>     <XAML.Style.Node>         <this-is-also-valid-xml>             foo         </this-is-also-valid-xml>     </XAML.Style.Node> </node>; xml["XAML.Style.Node"]["this-is-also-valid-xml"].(trace(text()));

Q: How do I loop through all the nodes recursively?
Example
ActionScript Code:
var xml:XML = <node>     <node>         <node>             <node>                 <node/>             </node>         </node>     </node>     <node>         <node/>         <node/>     </node> </node>; function lookupRecursive(node:XML, level:int = 0):void {     node.@nestingLevel = level++;     node.*.(lookupRecursive(valueOf(), level)); }

Q: How do I map all nodes using unique ID for every node?
Example
ActionScript Code:
var xml:XML = <node>     <node>         <node>             <node>                 <node/>             </node>         </node>     </node>     <node>         <node/>         <node/>     </node> </node>; var mapIndex:int; function mapXML(xml:XML):void {     xml.@mapIndex = ++mapIndex; }

Q: How do I generate XML dynamically?
Example
ActionScript Code:
var xml:XML = <node/>; xml.addSingleNode = <foo/>; xml.addTextNode = "bar"; xml.appednList = (<firstListNode/> + <secondListNode/>); xml.appendDynamicNode = <node>{Math.random()}</node>; xml.appendChild(<childNode/>); xml.prependChild(<firstChild/>); xml.cdata = <![CDATA[ CData content ]]>; xml.firstChild.setChildren("some text"); xml.replace(xml.*.length(), "some more text"); trace(xml.toXMLString());

Continued:
__________________
The .NET open source editor for Flash and web developers
*This would be my contribution to the project*
couchsurfing if you need it

Last edited by wvxvw; 02-02-2009 at 07:19 PM..
wvxvw is offline   Reply With Quote
Old 02-02-2009, 12:54 AM   #2
Cota
Super Moderator
 
Cota's Avatar
 
Join Date: Jul 2001
Location: NYC
Posts: 10,065
Default

You should turn this into an article as well.
__________________
Color Wars™ | (kul′ər wôrs) n. - Open conflict between factions. www.theColorWars.com

cota - www.chadworkman.com | http://shavedplatypus.com
occupation: designer | flash developer | server-side developer (php, asp, mssql, mysql)
Cota is offline   Reply With Quote
Old 02-02-2009, 03:14 AM   #3
CyanBlue
Super Moderator
 
CyanBlue's Avatar
 
Join Date: Jan 2002
Location: Centreville, VA
Posts: 25,331
Default

Totally agreed... Very nice, wvxvw...
__________________
CyanBlue / Jason Je / Macromedia Certified Flash Developer & Designer
http://CyanBlue.FlashVacuum.com
http://www.FlashVacuum.com
http://tutorials.FlashVacuum.com

Do NOT PM, Email or Call me... Your question belongs right in this forum...
CyanBlue is offline   Reply With Quote
Old 02-02-2009, 04:29 AM   #4
Mazoonist
Site Contributor
 
Mazoonist's Avatar
 
Join Date: Jun 2006
Posts: 2,195
Send a message via AIM to Mazoonist
Default

Cool!
I have a question, and not to clutter up your spiffy new thread, but...

How useful is inline XML? I mean, I can see the advantage of loading an external XML file: You can always edit the XML and never again touch the flash application. And I know the inline XML is a new feature of AS3, but what could possibly be the advantage of keeping the XML inline and in the flash file(s)? Thanks.

I agree you should do an article on this. Also one on regular expressions, which I have noticed you are good at.
__________________
My Tutorials * My Website

Last edited by Mazoonist; 02-02-2009 at 04:31 AM..
Mazoonist is online now   Reply With Quote
Old 02-02-2009, 04:58 AM   #5
fx.barrett
Paintball Freak
 
fx.barrett's Avatar
 
Join Date: Jul 2008
Location: Romania, TM
Posts: 467
Send a message via MSN to fx.barrett Send a message via Skype™ to fx.barrett
Default

Quote:
Originally Posted by Mazoonist View Post
How useful is inline XML?
Honestly, I never use inline XML in my projects because I don't see any point in doing so... The only time I write inline XML is when I want to help someone out with something and I'm too lazy to write an XML file and load it dynamically... Other than that, I really see no point in ever using inline XML.

Check out this link: http://www.senocular.com/flash/tutor...ashcs3/?page=4
__________________
FLASHFORUM.RO - You must speak Romanian in order to join.
BLOG.WISEBISOFT.COM - Share and Experiment.
fx.barrett is offline   Reply With Quote
Old 02-02-2009, 05:03 AM   #6
Cota
Super Moderator
 
Cota's Avatar
 
Join Date: Jul 2001
Location: NYC
Posts: 10,065
Default

I think the inline XML for this is for example purposes.
__________________
Color Wars™ | (kul′ər wôrs) n. - Open conflict between factions. www.theColorWars.com

cota - www.chadworkman.com | http://shavedplatypus.com
occupation: designer | flash developer | server-side developer (php, asp, mssql, mysql)
Cota is offline   Reply With Quote
Old 02-02-2009, 05:08 AM   #7
Mazoonist
Site Contributor
 
Mazoonist's Avatar
 
Join Date: Jun 2006
Posts: 2,195
Send a message via AIM to Mazoonist
Default

Hey, Cota. Right. I knew that, it just served to remind me.
__________________
My Tutorials * My Website
Mazoonist is online now   Reply With Quote
Old 02-02-2009, 10:20 AM   #8
wvxvw
Holosuit User
 
wvxvw's Avatar
 
Join Date: Oct 2006
Location: Tel Aviv
Posts: 3,501
Send a message via ICQ to wvxvw
Default

As for the inline XML, I use it sometimes for layouting purposes. Say, you have a static layout which uses components with dataproviders. Imagine typical HTML survey, that uses lots of comboboxes with predefined values which aren't likely to change ever, eg. the list of countries / languages / hours of the day etc.
The advantage of doing so:
faster initialization
less traffic (SWF will zip the XML inside it, while loaded XML is likely to be 50% bigger than zipped, also you don't need to send another request to the server).

Also, sometimes I need to have a default XML in place where there may be the loaded later XML. I.e. imagine this: you're trying to fetch user info from the Facebook account. But user didn't fill in all the entries. So, I'd rather take the XML with the default values and replace only the entries that are filled. Thus I won't need to rebuild all the XML anew. I.e. say, there's the username and avatar nodes. User may not supply the avatar picture, but, I need the default avatar picture anyway. So, I process the default XML, build the UI with the default values, then after I load the XML from Facebook, I loop through it to see if the avatar node isn't empty, if so - replace the node in my schema and reload the picture, if not - leave it with the default value.

Sorry, it's taking somewhat more time then I originally though, but I'll try to post the continuation today in the evening
__________________
The .NET open source editor for Flash and web developers
*This would be my contribution to the project*
couchsurfing if you need it
wvxvw is offline   Reply With Quote
Old 02-02-2009, 05:45 PM   #9
wvxvw
Holosuit User
 
wvxvw's Avatar
 
Join Date: Oct 2006
Location: Tel Aviv
Posts: 3,501
Send a message via ICQ to wvxvw
Default

Q: How do I generate UI elements depending on the values from XML?
A: There're lots of ways you can do it. This example shows how to load number of images dynamically based on their URL defined in XML:
For creating symbols from the library rather than loading them see manual on flash.utils.getDefinitionByName()
Example
ActionScript Code:
var images:XML = <images>     <image src="http://www.actionscript.org/forums/images/smilies/tongue.gif">         <hover>             <![CDATA[Hovering over <b>Toungue</b> smiley]]>         </hover>         <click>             <![CDATA[<b>Toungue</b> smiley selected]]>         </click>     </image>     <image src="http://www.actionscript.org/forums/images/smilies/wink.gif">         <hover>             <![CDATA[Hovering over <b>Wink</b> smiley]]>         </hover>         <click>             <![CDATA[<b>Wink</b> smiley selected]]>         </click>     </image>     <image src="http://www.actionscript.org/forums/images/smilies/mad.gif">         <hover>             <![CDATA[Hovering over <b>Mad</b> smiley]]>         </hover>         <click>             <![CDATA[<b>Mad</b> smiley selected]]>         </click>     </image>     <image src="http://www.actionscript.org/forums/images/smilies/redface.gif">         <hover>             <![CDATA[Hovering over <b>Red face</b> smiley]]>         </hover>         <click>             <![CDATA[<b>Red face</b> smiley selected]]>         </click>     </image>     <image src="http://www.actionscript.org/forums/images/smilies/frown.gif">         <hover>             <![CDATA[Hovering over <b>Frown</b> smiley]]>         </hover>         <click>             <![CDATA[<b>Frown</b> smiley selected]]>         </click>     </image> </images>; var loaders:Array = []; var isUserSelection:Boolean; var field:TextField = new TextField(); field.width = 180; field.height = 20; field.border = true; field.addEventListener(MouseEvent.CLICK, textClickHandler); addChild(field); function loadNextSmiley(event:Event = null):void {     var loader:Loader;     var sprite:Sprite;     if (event)     {         loader = (event.target as LoaderInfo).loader;         loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadNextSmiley);         sprite = new Sprite();         sprite.x = (loaders.length - 1) * 40;         sprite.y = 30;         sprite.buttonMode = true;         sprite.addChild(loader);         addChild(sprite);     }     if (loaders.length < images.image.length())     {         loader = new Loader();         loaders.push(loader);         loader.addEventListener(MouseEvent.CLICK, clickHandler);         loader.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);         loader.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);         loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadNextSmiley);         loader.load(new URLRequest(images.image.@src[loaders.length - 1].toString()));     } } function clickHandler(event:MouseEvent):void {     field.htmlText = images.image.click[loaders.indexOf(event.target)];     isUserSelection = true; } function rollOverHandler(event:MouseEvent):void {     field.htmlText = images.image.hover[loaders.indexOf(event.target)]; } function rollOutHandler(event:MouseEvent):void {     if (isUserSelection) return;     field.htmlText = ""; } function textClickHandler(event:MouseEvent):void {     isUserSelection = false;     field.htmlText = ""; } loadNextSmiley();
Q: How do I convert values from XML to data types other then XML or String?
This is only an example, you may extend it at will.
Example
ActionScript Code:
var xml:XML = <xml>     <Number>-1.2345</Number>     <int base="16">0xABCDEF</int>     <Boolean>0</Boolean>     <Array separator=",">0,1,2,3</Array>     <Date><![CDATA[Mon Feb 2 23:11:19 GMT+0200 2009]]></Date>     <RegExp><![CDATA[/\d{1,3}/ig]]></RegExp>     <Class>flash.display.MovieClip</Class> </xml>; function constructObject(objXML:XML):Object {     switch (String(objXML.name()))     {         case "Number":             return parseFloat(objXML);             break;         case "int":             return parseInt(objXML, int(objXML.@base));             break;         case "Boolean":             return Boolean(int(objXML));             break;         case "Array":             return String(objXML).split(objXML.@separator);             break;         case "Date":             return new Date(String(objXML));             break;         case "RegExp":             var source:String = String(objXML).slice(0, String(objXML).lastIndexOf("/"));             var options:String = String(objXML).substr(String(objXML).lastIndexOf("/") + 1);             return new RegExp(source, options);             break;         case "Class":             return getDefinitionByName(objXML);             break;     }     return null; } xml.*.(trace(getQualifiedClassName(constructObject(valueOf())),                                         "\n-------------------\n",                                         constructObject(valueOf()),                                         "\n-------------------"));
Q: How do I sort XML nodes on dynamically defined criteria?
Also keep in mind that usually you'd like to have a more complex condition for sorting. And passing arguments via defining them on the function you use for sorting will not be usually what you want to do.
Example
ActionScript Code:
var xml:XML = <node>     <node id="6"/>     <node id="3"/>     <node id="1"/>     <node id="4"/>     <node id="2"/>     <node id="5"/>     <node id="1"/> </node>; function sortList(list:XMLList, attribute:String):XMLList {     var temp:Array = [];     list.(temp.push(valueOf()));     Object(sortOnID).property = attribute;     temp.sort(sortOnID);     list = XMLList(temp.shift());     while (temp.length) list += temp.shift();     return list; } var sortOnID:Function = function(aXML:XML, bXML:XML):int {     var prop:String = arguments.callee.property;     var aint:int = parseInt(aXML.@[prop], 10);     var bint:int = parseInt(bXML.@[prop], 10);     if (aint > bint) return 1;     if (aint == bint) return 0;     return -1; } trace(sortList(xml.*, "id"));
Q: How do I work with HTML formatted text in XML (HTML entities)?
Example
ActionScript Code:
var xml:XML = <node/>; // NOTE: Flash will not produce valid XML if // you try to assign XML-formatted string to attribute // eg: xml.@attr = <html><br/></html>.toXMLString(); // will result in: // attr="&lt;html>&#xA;  &lt;br/>&#xA;&lt;/html>" xml.@attr = encodeURI(<html><br/></html>); trace(xml.toXMLString()); trace("----- xml.@attr -----"); trace(unescape(xml.@attr)); // This is the way to get the node text // encoded using HTML entities such as &lt; and &gt; // otherwise, if you try setting the content of anode // to the XML-formatted string it'll be converted to XML xml.foo = <html><br/></html>.toXMLString(); xml.replace("foo", xml.foo.text()); // Another, more common way is to append this // sort of texts using CDATA xml.appendChild(<![CDATA[<html><br/></html>]]>); trace("----- xml.toXMLString() -----"); trace(xml.toXMLString());
Q: How do I combine nodes that share common values?
Example
ActionScript Code:
var xml:XML = <videos>     <video>         <title>video1</title>         <thumb>file1.jpg</thumb>         <group>group1</group>     </video>     <video>         <title>video2</title>         <thumb>file2.jpg</thumb>         <group>group2</group>     </video>     <video>         <title>video3</title>         <thumb>file3.jpg</thumb>         <group>group2</group>     </video>     <video>         <title>video4</title>         <thumb>file4.jpg</thumb>         <group>group1</group>     </video> </videos>; var result:XML = <videos/>; xml.video.(checkDuplicate(copy())); function checkDuplicate(node:XML):void {     if (new RegExp(node.group,             "g").exec(result.video.group.text()))     {         result.video.(group.text() ==             node.group).replace(0, node.*.(name() != "group"));     }     else     {         result.appendChild(node);     } } trace(result.toXMLString());
Q: How do I remove repetitive nodes?
Example
ActionScript Code:
var xml:XML = <node>     <not-unique-node/>     <unique-node/>     <not-unique-node/>     <not-unique-node>foo</not-unique-node> </node>; // Remove every node with not unique name xml.*.(parent()[name()].length() > 1 ? parent().replace(childIndex(), "") : ""); xml.normalize(); trace(xml.toXMLString()); // Remove only completely identical nodes xml = <node>     <not-unique-node/>     <unique-node/>     <not-unique-node/>     <not-unique-node>foo</not-unique-node> </node>; var array:Array = []; xml.*.(array.push(toXMLString())); array.map(findDuplicate); function findDuplicate(node:String, index:int, all:Array):void {     if (all.indexOf(node) != all.lastIndexOf(node))     {         all.splice(index, 1);     } } xml.setChildren(XMLList(array.join(""))); trace(xml.toXMLString());
Example #2
ActionScript Code:
var xml:XML = <data>     <node id="foo"/>     <node id="bar"/>     <node id="foo"/>     <node id="foo"/>     <node id="foo"/>     <node id="blah"/>     <node id="foo"/> </data>; var hash:Object = {}; var list:XMLList = xml.*.(hash[toXMLString()] ==                     undefined ? hash[toXMLString()] =                     valueOf() : false); trace(list.toXMLString());
Q: How do I extract a shallow copy of the node (without child nodes)?
Example
ActionScript Code:
var xml:XML = <node>     <foo bar="foo">         <bar/>     </foo> </node>; var theCopy:XML = shallowCopy(xml.foo[0]); function shallowCopy(childXML:XML):XML {     var copy:XML = childXML.copy();     copy.setChildren("");     // or     // copy.replace("*", "");     return copy.normalize(); } trace(theCopy.toXMLString());
__________________
The .NET open source editor for Flash and web developers
*This would be my contribution to the project*
couchsurfing if you need it

Last edited by wvxvw; 02-11-2009 at 10:29 PM..
wvxvw is offline   Reply With Quote
Old 02-02-2009, 06:13 PM   #10
EndlessLine
Intelligent Ape
 
EndlessLine's Avatar
 
Join Date: Aug 2007
Location: Denver, CO
Posts: 131
Send a message via AIM to EndlessLine
Default

Thumbs up, I love using E4X....I just have to look up information exactly like this because I can never remember the syntax. Thanks a ton!
__________________
"Try the morphine, it's excellent today."
EndlessLine is offline   Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
E4X vs XMLDocument parsing speed... CyanBlue ActionScript 3.0 20 09-08-2008 05:51 PM
E4X, parents of target query? Reggie1979 ActionScript 3.0 9 09-04-2008 08:09 PM
How to filter multiple elements by name using E4X predicates? rollingsj ActionScript 3.0 2 05-12-2008 06:40 PM
Possible memory leak in e4x or in HttpService lacito Flex 2 & 3 11 10-11-2007 11:03 AM
Clarification of Senocular FAQ regarding classes which extend MovieClip ironchefmoto ActionScript 2.0 3 07-18-2007 06:24 AM


All times are GMT. The time now is 07:35 PM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Ad Management plugin by RedTyger
Copyright 2000-2009 ActionScript.org. All Rights Reserved.
Your use of this site is subject to our Privacy Policy and Terms of Use.