750
Best Practices and Coding Conventions for ActionScript 2.0
About scope in classes
When you port code to ActionScript 2.0 classes, you might have to change how you use the
this
keyword. For example, if you have a class method that uses a callback function (such as
the LoadVars class’s
onLoad
method), it can be difficult to know if the
this
keyword refers to
the class or to the LoadVars object. In this situation, you might need to create a pointer to the
current class, as the following example shows:
class Product {
private var m_products_xml:XML;
// Constructor
// targetXmlStr contains the path to an XML file
function Product(targetXmlStr:String) {
/* Create a local reference to the current class.
Even if you are within the XML's onLoad event handler, you
can reference the current class instead of only the XML packet. */
var thisObj:Product = this;
// Create a local variable, which is used to load the XML file.
var prodXml:XML = new XML();
prodXml.ignoreWhite = true;
prodXml.onLoad = function(success:Boolean) {
if (success) {
/* If the XML successfully loads and parses,
set the class's m_products_xml variable to the parsed
XML document and call the init function. */
thisObj.m_products_xml = this;
thisObj.init();
} else {
/* There was an error loading the XML file. */
trace("error loading XML");
}
};
// Begin loading the XML document
prodXml.load(targetXmlStr);
}
public function init():Void {
// Display the XML packet
trace(this.m_products_xml);
}
}
Because you are trying to reference the private member variable within an
onLoad
handler, the
this
keyword actually refers to the
prodXml
instance and not to the
Product
class, which you
might expect. For this reason, you must create a pointer to the local class file so that you can
directly reference the class from the
onLoad
handler.
For more information on classes, see
“Understanding classes and scope” on page 283
. For
more information on scope, see
“Handling scope” on page 747
.
Summary of Contents for FLASH 8-LEARNING ACTIONSCRIPT 2.0 IN FLASH
Page 1: ...Learning ActionScript 2 0 in Flash...
Page 8: ...8 Contents...
Page 18: ...18 Introduction...
Page 30: ...30 What s New in Flash 8 ActionScript...
Page 66: ...66 Writing and Editing ActionScript 2 0...
Page 328: ...328 Interfaces...
Page 350: ...350 Handling Events...
Page 590: ...590 Creating Interaction with ActionScript...
Page 710: ...710 Understanding Security...
Page 730: ...730 Debugging Applications...
Page 780: ...780 Deprecated Flash 4 operators...
Page 830: ...830 Index...