Difference between revisions of "Actionscript"

From Wikicliki
Jump to: navigation, search
(See Also)
 
(34 intermediate revisions by 2 users not shown)
Line 1: Line 1:
actionscript, that infuriatingly intractable marshmellow fluff...
+
http://ntt.cc/2008/04/09/over-30-useful-as3-open-source-projects.html
so far i have only understood the most basic of concepts, but now i will try to learn it well.
 
  
== trace ==
+
== Basics ==
 +
=== Operators ===
  
<pre>var message = "Hi there";
+
* + for addition
trace (message);                                   // prints "Hi there"
+
* - for subtraction
 +
* asterisk for multiply
 +
* / for divide
 +
 
 +
these two are the same:
 +
<pre>myNum = myNum + 6;
 +
myNum += 6;</pre>
 +
 
 +
* ++ add one
 +
* -- decrease by one
 +
 
 +
those can be postfix or prefix operators but remember that only prefix affects it immediately.
 +
<pre>myNum = 5;
 +
trace(myNum++);       // displays 5 (adds one to next trace)
 +
trace(myNum);       // displays 6 (has added one from the postfix)
 +
trace(++myNum);      // displays 7 (adds one as its a prefix)
 
</pre>
 
</pre>
  
<pre>var message = "yellow";
+
use this incremental thing to modify property over time:
trace ("big " + message + " truck");               // prints "big yellow truck"
+
<pre>my_mc.onEnterFrame = function () {
</pre>
+
this._rotation += 5;       // makes mc rotate by 5 degrees clockwise for each tick of frame rate
 +
};</pre>
  
== code hinting suffixes/names==
+
=== Checking/Comparing Values ===
  
to keep in good form you should keep to these common suffixes so that any programmer can read your code easily without finding it utterly incomprehensible.
+
* == checks for logical equality
 +
*  != checks for logical inequality
 +
* === checks for strict logical equality
 +
* !== checks for strict logical inequality
  
variables:
+
<pre>logical equality test
*must start with letters, underscore or dollarsign.
+
trace(5 == 6);      // false             
*no hyphens or other punctuation besides the underscore.
+
trace(6 == 6);      // true
*cannot start with a number.
+
trace(6 == "6");      // true
*are case-insensitive, but keep it constant or you might get confused
 
  
 +
logical inequality test
 +
trace(5 != 6);      // true             
 +
trace(6 != 6);      // false             
 +
trace(6 != "6");      // false</pre>
  
*xxx_str  // means the variable contains a string
+
notice how with or without the quotation marks its okay... but with the strict logical operators, its not the case.
*xxx_arr // means the variable contains an array
 
  
 +
<pre>strict logical equality test
 +
trace(5 === 6);      // false             
 +
trace(6 === 6);      // true
 +
trace(6 === "6");      // false
 +
trace("6" === 6);      // false
 +
trace("6" === "6");      // true
  
== conditionals ==
+
strict logical inequality test
 +
trace(5 !== 6);      // true             
 +
trace(6 !== 6);      // false             
 +
trace(6 !== "6");      // true
 +
trace("6" !== 6);      // true
 +
trace("6" !== "6");      // false</pre>
  
<pre>var message = "yellow";
+
you have to remember that you shouldn't use just one = to test if its equal as the single = assigns values to things.
trace ("big " + message + " truck");                // prints "big yellow truck"
 
if (message == "yellow") {
 
trace ("yes, i did say big yellow truck.");        // prints "yes, i did say big yellow truck"
 
}</pre>
 
  
<pre>= assigning value
+
=== Checking Datatype ===
== comparing values</pre>
 
  
== loops ==
+
<pre>var myVar = 5;
 +
if (typeof myVar == "number") {
 +
  trace("Its a number");
 +
}</pre>
  
<table><tr><td valign=top>this sequence... <pre>trace (101);
+
NaN is when its Not a Number but you can't just check it against the NaN. You have to use the special isNaN function (conversely, you can also use !isNaN to find a number)  
trace (102);
 
trace (103);
 
trace (104);
 
trace (105);</pre></td>
 
<td valign=top>is equal to:
 
<pre>var x = 101;
 
trace (x);
 
x = x + 1;
 
trace (x);
 
x = x + 1;
 
trace (x);
 
x = x + 1;
 
trace (x);
 
x = x + 1;
 
trace (x);</pre></td>
 
<td valign=top>is also equal to:
 
<pre>var x = 101;
 
while (x <= 105) {    // as long as x is less than 105...
 
trace (x);
 
x = x + 1;          // ...continue to trace x but add one each time
 
}</pre></td>
 
<td valign=top>they all print:
 
<pre>101
 
102
 
103
 
104
 
105</pre></td></tr></table>
 
  
== functions ==
+
<pre>var myVar - 15 - "coffee";
 +
if (isNaN(myVar)) {
 +
trace("Thats not a number");
 +
}</pre>
  
sample:
+
=== Comparing Arrays ===
  
<pre>function area(height, width){
+
when arrays are compared to see if they are the same, it has to be the exact same thing ie: can't just contain the same items, it has to be equalled, like literally...
return height * width;
 
}
 
area1 = area(10,15);
 
area2 = area(10,20);
 
area3 = area(10,20);
 
</pre>
 
  
== event based execution ==
+
<pre>arrayOne = newArray("wonk", "wink");
 +
arrayTwo = newArray("wonk", "wink");
 +
trace(arrayOne == arrayTwo); // displays false
  
<pre>someObject.onSomeEvent = someFunction;</pre>
+
arrayOne = newArray("wonk", "wink");
 +
arrayOne = arrayTwo;
 +
trace(arrayOne == arrayTwo); // displays true</pre>
  
for example:
+
=== Conditionals ===
<pre>skaGirl.onRelease = dirtyskanking;            // the object named skaGirl will dirtyskank when mouse is released
 
  
function dirtyskanking () {
+
<pre>var message = "yellow";                        // the equal sign assigns values to variables
this._parent._rotation = 360;                     // defines the rotation of the dirtyskanking.
+
trace ("big " + message + " truck");            // prints "big yellow truck"
}
+
if (message == "yellow") {                     // the double equal sign checks to see if variables are equal
</pre>
+
trace ("yes, i did say big yellow truck.");    // prints "yes, i did say big yellow truck"
 +
trace (typeof message);                        // prints "string"
 +
var x = a;                                     // prints "number"
 +
trace (typeof a)
 +
}</pre>
  
== sample ==
+
<pre>var x = 1;
 +
while (x <= 5) {                // as long as x is less than 5...
 +
trace (x);                      // return 1 in output
 +
x = x + 1;                      // return 2 3 4 5 in output
 +
}</pre>
  
=== quiz ===
+
=== Reusable functions===
  
<pre>
+
== Runtime Environment ==
button1.onRelease = function () {        // on pressing button 1
+
=== Include external actionscript file===
this._parent.q1answer = 1;                // assigning 1 to q1 answer
+
<pre>#include "filename.as"          // includes the .as file at runtime (must be in same folder as .fla)</pre>
this._parent.gotoAndStop("q2")           // after which we go to frame labelled as q2
 
}
 
  
if (q1answer == 3) {                      //  if answer was right
+
=== Detecting player/OS ===
  totalCorrect = totalCorrect++;          //  increase number of total correct qns by one
+
=== Setting movie dimensions ===
}
 
</pre>
 
  
== confused about root, this, and parent? so am i! ==
+
== Color ==
 +
=== Setting RGB ===
 +
=== Setting Transparency ===
 +
=== Transform and restore RGB ===
 +
=== Controlling RGB with sliders ===
  
this piece of code would work ON a frame on the main stage, one_mc being an object onnit.
+
== Drawing ==
  
<pre>function T1over() {
+
== Numbers ==
_root.one_mc.gotoAndStop(2);
+
=== Rounding Numbers ===
getURL('javascript:modifyT1();');
 
}
 
  
_root.one_mc.onRollOver = T1over;</pre>
+
== Text Field ==
  
== actionscript and javascript ==
+
== Arrays ==
 +
Oh no.
  
*[http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_15683 flash to/from javascript call]
+
== Strings ==
  
== tips ==
+
== Date/Time ==
  
* use frame labels rather than frame numbers. a starting frame could be init.
 
  
 
== See Also ==
 
== See Also ==
*[http://livedocs.adobe.com/flashlite/2/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000642.html preloader]
+
 
 +
[[Category:Programming]]

Latest revision as of 03:39, 1 June 2009

http://ntt.cc/2008/04/09/over-30-useful-as3-open-source-projects.html

Basics

Operators

  • + for addition
  • - for subtraction
  • asterisk for multiply
  • / for divide

these two are the same:

myNum = myNum + 6;
myNum += 6;
  • ++ add one
  • -- decrease by one

those can be postfix or prefix operators but remember that only prefix affects it immediately.

myNum = 5;
trace(myNum++);       // displays 5 (adds one to next trace)
trace(myNum);       // displays 6 (has added one from the postfix)
trace(++myNum);       // displays 7 (adds one as its a prefix)

use this incremental thing to modify property over time:

my_mc.onEnterFrame = function () {
this._rotation += 5;       // makes mc rotate by 5 degrees clockwise for each tick of frame rate
};

Checking/Comparing Values

  • == checks for logical equality
  •  != checks for logical inequality
  • === checks for strict logical equality
  •  !== checks for strict logical inequality
logical equality test 
trace(5 == 6);       // false               
trace(6 == 6);       // true
trace(6 == "6");       // true

logical inequality test
trace(5 != 6);       // true               
trace(6 != 6);       // false               
trace(6 != "6");       // false

notice how with or without the quotation marks its okay... but with the strict logical operators, its not the case.

strict logical equality test 
trace(5 === 6);       // false               
trace(6 === 6);       // true
trace(6 === "6");       // false
trace("6" === 6);       // false
trace("6" === "6");       // true

strict logical inequality test
trace(5 !== 6);       // true               
trace(6 !== 6);       // false               
trace(6 !== "6");       // true
trace("6" !== 6);       // true
trace("6" !== "6");       // false

you have to remember that you shouldn't use just one = to test if its equal as the single = assigns values to things.

Checking Datatype

var myVar = 5;
if (typeof myVar == "number") {
  trace("Its a number");
}

NaN is when its Not a Number but you can't just check it against the NaN. You have to use the special isNaN function (conversely, you can also use !isNaN to find a number)

var myVar - 15 - "coffee";
if (isNaN(myVar)) {
trace("Thats not a number");
}

Comparing Arrays

when arrays are compared to see if they are the same, it has to be the exact same thing ie: can't just contain the same items, it has to be equalled, like literally...

arrayOne = newArray("wonk", "wink");
arrayTwo = newArray("wonk", "wink");
trace(arrayOne == arrayTwo);		// displays false

arrayOne = newArray("wonk", "wink");
arrayOne = arrayTwo;
trace(arrayOne == arrayTwo);		// displays true

Conditionals

var message = "yellow";                         // the equal sign assigns values to variables
trace ("big " + message + " truck");            // prints "big yellow truck"
if (message == "yellow") {                      // the double equal sign checks to see if variables are equal
trace ("yes, i did say big yellow truck.");     // prints "yes, i did say big yellow truck"
trace (typeof message);                         // prints "string"
var x = a;                                      // prints "number"
trace (typeof a)
}
var x = 1;
while (x <= 5) {                // as long as x is less than 5...
trace (x);                      // return 1 in output
x = x + 1;                      // return 2 3 4 5 in output
}

Reusable functions

Runtime Environment

Include external actionscript file

#include "filename.as"          // includes the .as file at runtime (must be in same folder as .fla)

Detecting player/OS

Setting movie dimensions

Color

Setting RGB

Setting Transparency

Transform and restore RGB

Controlling RGB with sliders

Drawing

Numbers

Rounding Numbers

Text Field

Arrays

Oh no.

Strings

Date/Time

See Also