Made to Order Software Corporation Logo

ActionScript

Try

SWF Action
Action Category: 
Control
Action Details: 
0
Action Identifier: 
143
Action Structure: 
unsigned char     f_try_reserved : 5;
unsigned char     f_catch_in_register : 1;
unsigned char     f_finally : 1;
unsigned char     f_catch : 1;
unsigned short    f_try_size;
unsigned short    f_catch_size;
unsigned short    f_finally_size;
if(f_catch_in_register == 0) {
  string                   f_catch_name;
}
else {
  unsigned char    f_catch_register;
}
Action Length: 
-1 byte(s)
Action Stack: 
n.a.
Action Operation: 
try { ... }
catch(name) { ... }
finally { ... }
Action Flash Version: 
7
See Also: 

Declare a try/catch/finally block.

This has the behavior of the action script:

	try { ... }
	catch(name) { ... }
	finally { ... }

In version 7, there are no definition of exceptions in the ActionScript interpreter. However, you can write functions that Throw.

The semantic of the try/catch/finally block is very well defined in ECMA 262 version 3 (see pages 87/88).

Strict Mode

SWF Action
Action Category: 
Control
Action Details: 
0
Action Identifier: 
137
Action Structure: 
unsigned char   f_strict;
Action Length: 
1 byte(s)
Action Stack: 
n.a.
Action Operation: 
strict_mode(f_strict);
Action Flash Version: 
5

Set the strict mode (f_strict != 0) or reset the strict mode (f_strict == 0).

The strict mode is used with arithmetic and comparison operators and some other such ActionScript features.

Implements

SWF Action
Action Category: 
Objects
Action Details: 
0
Action Identifier: 
44
Action Structure: 
<n.a.>
Action Length: 
0 byte(s)
Action Stack: 
pop 1 (o), pop 1 (i), pop i2 (o)
Action Operation: 
o1 := pop();
i2 := pop();
for (idx := 3; idx <= i2 + 2; ++idx) {
  oidx := pop();
}
o1 implements o3, o4, o5, ... , o(i2 +2)
Action Flash Version: 
7

This action declares an object as a sub-class of one or more interfaces. The syntax here is simple, the real implementation is quite unbelievably difficult to fathom.

The following shows you how you can add an implements of interfaces "A" and "B" to the class "C". Notice that class "C" needs to already exist. Here we assume that all classes are defined in the global scope.

	push data "_global"
	get variable
	push data "A"
	get member
	push data "_global"
	get variable
	push data "B"
	get ...

Get Member

SWF Action
Action Category: 
Objects
Action Details: 
0
Action Identifier: 
78
Action Structure: 
<n.a.>
Action Length: 
0 byte(s)
Action Stack: 
pop 1 (a), pop 1 (o), push 1 (a)
Action Operation: 
a1 := pop();
o2 := pop();
r := o2[a1];
push(r);
Action Flash Version: 
5

Pop one string or an integer (member name), pop an object reference, define the value of that object member and push the result back on the stack.

Objects include some special members such as:

Extends

SWF Action
Action Category: 
Objects
Action Details: 
0
Action Identifier: 
105
Action Structure: 
<n.a.>
Action Length: 
0 byte(s)
Action Stack: 
pop 2 (s), push 1 (o)
Action Operation: 
s1 := pop();
s2 := pop();
super_class := s1;
sub_class := s2;
sub_class.prototype := new object;
sub_class.prototype.__proto__ := super_class.prototype;
sub_class.prototype.__constructor__ := super_class;
push(sub_class.prototype);
Action Flash Version: 
7

The Extends action will be used to define a new object extending another object. The declaration in ActionScript is:

class A extends B;

In an SWF action script, you don't exactly declare objects, you actually instantiate them and define their functions. This action creates a new object named s2 which is an extension of the object s1.

Use this action whenever you need to inherit an object without calling its constructor.

SWF Internal Functions

Since Flash version 5, you can use internal functions (really member functions or methods of internal objects.) These functions are always available. These methods are called using the Call Function action with the name of the object and function separated by a period. A few of these internal functions are duplicates of some direct action script instructions. In general, it is preferred to use these internal functions rather than the direct action. However, direct actions are a good way to optimize your ActionScript code.

Similarly, you can access internal constants (really variable ...

Enumerate Object

SWF Action
Action Category: 
Objects
Action Details: 
0
Action Identifier: 
85
Action Structure: 
<n.a.>
Action Length: 
0 byte(s)
Action Stack: 
pop 1 (o), push null, push * (s)
Action Operation: 
o1 := pop();
push(null);
foreach(o1 as name) {
  push(name);
}
Action Flash Version: 
6

Pop an object from the stack, push a null, then push the name of each variable and function member of that object on the stack.

This mechanism can be used to implement a foreach() function on an object. Be careful, though, that the stack be cleared when leaving the loop.

This action uses an object reference. If you only have the name of the object, use the Enumerate action instead.

Duplicate Sprite

SWF Action
Action Category: 
Movie
Action Details: 
0
Action Identifier: 
36
Action Structure: 
<n.a.>
Action Length: 
0 byte(s)
Action Stack: 
pop 1 (i), pop 2 (s)
Action Operation: 
i1 := pop();
s2 := pop();
s3 := pop();
duplicate_sprite(s3, s2, i1);
Action Flash Version: 
4

s3 is the name of an existing sprite1 which is copied by this action.

The new sprite is given  the name s2 and is placed at depth i1.

  • 1. Remember that a sprite, movie, thread and other terms that I forget, are all the same thing.

Branch If True

SWF Action
Action Category: 
Control
Action Details: 
0
Action Identifier: 
157
Action Structure: 
signed short   f_offset;
Action Length: 
2 byte(s)
Action Stack: 
pop 1 (b)
Action Operation: 
b1 := pop();
if(b1) {
    ip += f_offset;   // ip past the branch action
}
Action Flash Version: 
4
See Also: 

Pop a Boolean value; if true then jump to the specified action; otherwise continue with the following actions.

There is no Branch If False action. Instead, first use the Logical Not, then Branch If True.

IMPORTANT NOTES

Branch Always

SWF Action
Action Category: 
Control
Action Details: 
0
Action Identifier: 
153
Action Structure: 
signed short   f_offset;
Action Length: 
2 byte(s)
Action Stack: 
n.a.
Action Operation: 
ip += f_offset;   // ip past the branch action
Action Flash Version: 
4
See Also: 

Jump to the specified action. The offset is added to the current execution pointer as it is after reading the branch instruction.

IMPORTANT NOTES

The offset must be such that when added to the current execution pointer it points to a valid action (i.e. you cannot jump in the middle of a Push Data or any other multi-byte action.)