ADOBE FLEX Action Script Basics. MXML
Language Basics Action Script 3.0
Data Types Primitive types var i:int = -1; var u:uint = 0; Boolean, String References var o:Object; var c:Class = String; var s:String = new c; var x:* = …
Action Script 3.0 Type System Non-Strict typing vs Strict Typing var o:Object = …; var x:* = … Classes are Objects (Array is Object) == true (int is Object) == true (Object is Object) == true (Class is Object) == true Name of class x.className Class from name var c:Class = getDefinitionByName(“Array”) as Class;
Action Script 3.0 Objects are Dynamic Dynamic fields var o:Object = {name:"John", lname:"Smith"}; o.age = 23; o[“address”] = “New York”; Dictionary vs Object as dictionary var d:Dictionary = new Dictionaty; var o:Object = new Object; d[“hello”] = 1; o[“hello”] = 1; d[o] = 2; o[o] = 2;
Action Script 3.0 Other Basic Types Array var a:Array = new Array; var b:Array = [1,2,3]; concat, filter, for each, map, indexOf, length, pop, push, reverse, slice, sort, splice, shift, unshift Array Collection addItem, addItemAt, getItemAt, contains, setItemAt, toArray Boolean String
Action Script 3.0 Other Basic Types String: the way we want it, but confusing sometimes == … length, indexOf, lastIndexOf, match, replace, slice, split, substr, charAr, charCodeAt, concat, search, toLowerCase, toUpperCase
Action Script 3.0 Basic Statements if-then-else if ( ) else for, while for (var i:int = 0; i for each (var o:Object in SomeArray) for each (var t:SomeType in SomeArray) Switch, break, try-catch, return, etc.
Action Script 3.0 Classes and methods Classes class MyClass : extends yourClass { public function myMethod (i:int,j:int):int { return 0; } public override function yourFunction ():void {} } No method overloading Explicit overriding super keyword, this keyword public constructor
Action Script 3.0 Properties class MyClass { private var _myNumber:Number = 0; public function set myNumber (n:Number):void { _myNymber = n; //do something else } public function get myNumber ():Number { //do something else return _myNumber; } Usage { var my:MyClass = new MyClass; my.myNumber = 5; }
Action Script 3.0 Static Methods class MyClass { private static var count:Number = 0; public static function getCount ():Number { return count++; } //… MyClass.getCount () == MyClass.getCount() + 1
Action Script 3.0 Inheritance Single inheritance only Multiple inheritance with Interfaces interface IMyInterface { public function myMethod ():Number; } class myClass extends YourClass implements IMyInterface, IYourInterface { //… }
Action Script 3.0 Tracing & Output Integrated debugger trace (…) function Alert.show (…) method
Action Script 3.0 & XML var xml:XML = Ivan 2 Petyr 2 Stefan 2 Ivan ; trace(xml.student[0].name); trace(xml.student.length());
Execution Applications
Console application Program logic time Synchronous Input
Messages sent from Objects to Objects Events User Event (Button Click) Event Queue Dispatch event Internal Event (Timer) Registered Listener (Window) Handle event
Message Pump Program Logic External Events Internal Events
Frames Per Second Execution Time Limit Flex Application Execution Model time fames Function execution Manual dispatch Hander A Hander B Hander C Events
XML? Action Script? MXML
Motivation Markup languages are common Easier Maintenance of the Layout Designers can work on the UI Simplified access of language features
MXML What Happens MyMXLExample.mxml: <mx:TextArea id=“myText” width = “100” height = “100”/> This code is transformed to Action Script code class MyMXMLExample extends Application { public var myText:TextArea; //… some method { myText = new TextArea; myText.width = 100; myText.height = 100; }
Thank you!