Difference between revisions of "Actionscript 2 Sandbox"
Line 86: | Line 86: | ||
* frame 2 name it as open | * frame 2 name it as open | ||
*frame 10 (or whatever) name it as close | *frame 10 (or whatever) name it as close | ||
+ | |||
+ | == swapdepths == | ||
+ | |||
+ | mc.swapDepths("1000"); | ||
+ | |||
+ | or each time you can up the depth using variable | ||
+ | |||
+ | on (press, release, dragOver, dragOut) { | ||
+ | _root.x +=5; | ||
+ | mc.swapDepths(_root.x); | ||
+ | } | ||
Revision as of 14:13, 4 May 2009
the readable stuff is at the Actionscript page, the sandbox is the-messing-around-with-snippets-section.
- http://senocular.com/
- http://www.gotoandlearn.com/
- http://www.kirupa.com/developer/flash/index.htm
- http://www.actionscript.org/resource...ies/Tutorials/
and one math website: http://library.thinkquest.org/20991/home.html
Contents
- 1 level0 vs root
- 2 onRelease vs onMouseDown
- 3 ALIGNMENT IS QUITE IMPORTANT
- 4 audio button
- 5 failproof mouseover
- 6 swapdepths
- 7 loadmovie
- 8 ACTIONSCRIPT 2.0
- 9 ACTIONSCRIPT 3.0
- 10 alpha
- 11 Codehinting
- 12 Conditionals
- 13 loops
- 14 functions
- 15 event based execution
- 16 sample
- 17 confused about root, this, and parent? so am i!
- 18 actionscript and javascript
- 19 tips
- 20 See Also
level0 vs root
http://forum.oxylusflash.com/sliding-list/324-scroll-when-loaded-into-parent-swf.html
http://kb2.adobe.com/cps/146/tn_14686.html
When a SWF file is loaded into the Flash player, it's main timeline is loaded into level 0. In this movie and this movie only will _root and _level0 reference the same timeline. Additional SWF files can be loaded into additional levels using loadMovie or loadMovieNum. References of _root in those files then reference the level in which that SWF referencing _root was loaded. For example, if a SWF is loaded into level 2, a reference to _root in that SWF will reference the same timeline that _level2 references, but will not reference the same timeline as _level0. A reference to _root will only equal _level0 in the SWF that was first loaded into the player (level 0).
onRelease vs onMouseDown
onMouseDown doesn't matter what the mc is. the whole file is a fucking button. use onRelease for MCs............
ALIGNMENT IS QUITE IMPORTANT
SO USE THE DAMN ALIGN PANEL MORE think about registration points and dont just move them all.....
audio button
because all my sounds were on the stage as events the global volume is the only way to do it
// changes colour of audio button and controls global volume.... var globalVolume:Sound = new Sound(); var audioState = 1; Color.prototype.clearRGB = function(){ audiospecial.setTransform({ra:100, rb:0,ga:100,gb:0,ba:100,bb:0,aa:100,ab:0}); } audiospecial.onRollOver = function() { var newColor = new Color(eval(audiospecial)); newColor.setRGB(0xFFFFFF); }; audiospecial.onRollOut = function() { var newColor = new Color(eval(audiospecial)); newColor.setRGB(0xFE6AFF); }; audiospecial.onMouseDown = function() { if (audioState == 1){ audiospecial.gotoAndPlay("soundoff"); globalVolume.setVolume(0); audioState = 0; } else if (audioState == 0) { audiospecial.gotoAndPlay(1); globalVolume.setVolume(100); audioState = 1; } else{ null } };
failproof mouseover
on the main timeline
stop(); mc1.onRollOver = function() { mc1.gotoAndPlay("open"); }; mc1.onRollOut = function() { mc1.gotoAndPlay("close"); };
on mc1 -
- put a stop on frame 1
- frame 2 name it as open
- frame 10 (or whatever) name it as close
swapdepths
mc.swapDepths("1000");
or each time you can up the depth using variable
on (press, release, dragOver, dragOut) { _root.x +=5; mc.swapDepths(_root.x); }
loadmovie
loadMovie("somecontent.jpg/gif/swf/png", "_root.container");
ACTIONSCRIPT 2.0
BOOLEAN
var rollOverFish:Boolean = false fish.onRollOver = function() { if (rollOverFish == false) { //Some Action rollOverFish = true; } else { null; } }
OTHERS
#include "filename.as" // includes the .as file at runtime (must be in same folder as .fla) /* 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 } /* BUTTONS IN A QUIZ */ button1.onRelease = function () { // on pressing button 1 this._parent.q1answer = 1; // assigning 1 to q1 answer this._parent.gotoAndStop("q2") // after which we go to frame labelled as q2 } if (q1answer == 3) { // if answer was right totalCorrect = totalCorrect++; // increase number of total correct qns by one } // you could even do something like // if ( 3 < 300 ) { do something } // if ( "a" < "z" ) { do something } // /* FUNCTIONS IN DIFFERENT LAYERS/SCENES */ function T1over() { // this code is placed on main stage _root.one_mc.gotoAndStop(2); // but refers to a one_mc on the stage getURL('javascript:modifyT1();'); } _root.one_mc.onRollOver = T1over; // this would be same on (rollOver) { // this placed on one_mc gotoAndStop(2); // is the same as above getURL('javascript:modifyT1();'); // OPTIONALLY use frame labels instead of frame no. } /* ROTATION */ on (rollOver) { this._rotation = + 45; // Values from 0 to 180 represent clockwise rotation; } // values from 0 to -180 represent counterclockwise rotation /* LOADING IMAGES IN */ this.createEmptyMovieClip("image_mc", 1); // to create a dynamically created mc image_mc.loadMovie("giraffe.jpg"); // mc loads an image image_mc.removeMovieClip(); // to remove the dynamically created mc /* CREATING TEXT FIELDS */ var score = 99; this.createTextField("score_txt", 1, 150, 200, 200, 20); score_txt.text = " "+score+" points"; // prints 99 points in score_txt field score_txt.textColor = 0xFF0000; // text color is red // myMovieClip.createTextField (instanceName,depth,x,y,width,height) // instanceName A string that identifies the instance name of the new text field. // x An integer that specifies the x coordinate of the new text field. // y An integer that specifies the y coordinate of the new text field. myFormat.underline = true; myFormat.Color = 0xFF0000; // alternatively, score_txt.textColor also works myFormat.bold = true; myFormat.size = 16; myFormat.font = "Georgia"; // if you choose to set a font, make sure you include dummy field offstage // which uses your font, has font embedding turned on (character) // and if you use bold/italic/regular variation you must include each type score_txt.setTextFormat(myFormat); // applies format to all of score_txt score_txt.setTextFormat(12, 27, myFormat); // applies format to only the 12-27th character in score_txt. HARDCORE.... this.createTextField("more_txt", 1, 180, 250, 200, 20); more_txt.html = true; // creating a dynamic (highlightable) txtfield more_txt.htmlText = "look its a <font color='#00ccff'><u> // you will have to format it all in html <a href='http://www.sg'>link</a> </u></font>"; /* LEARNING HOW TO DRAW */ _root.lineStyle(1, 0x000000, 50); // line-thickness, colour, opacity _root.moveTo(50, 100); // cross hatch drawing _root.lineTo(200, 100); // first number is the horizontal value _root.moveTo(50, 150); // second number is the vertical value _root.lineTo(200, 150); _root.moveTo(150, 50); _root.lineTo(150, 200); _root.moveTo(100, 50); _root.lineTo(100, 200); _root.lineStyle(5, 0x000000, 20); // drawing a square _root.moveTo(50, 50); _root.lineTo(200, 50); _root.lineTo(200, 200); _root.lineTo(50, 200); _root.lineTo(50, 50); _root.lineStyle(10, 0x000000, 100); // drawing a deformed circley thing with a fill. // note: to have no border, omit linestyle _root.moveTo(125, 50); // move starting point from 0,0 to elsewhere _root.beginFill(0x888888, 50); // add a fill of 50% opacity. can _root.curveTo(200,50, 200,125); // _root.curveTo(controlX, controlY, anchorX, anchorY); _root.curveTo(200,200, 125,200); _root.curveTo(50,200, 50,125); _root.curveTo(50,50, 125,50); _root.endFill /* drawing program */ _root.createEmptyMovieClip("line",1); _root.onMouseDown = function() { line.moveTo(_xmouse,_ymouse); line.lineStyle(1,0x000000,100); this.onMouseMove = function() { line.lineTo(_xmouse,_ymouse); updateAfterEvent(); } } /* Loading external swfs */ stop(); // place this on the frame where you want to stop container_mc.loadMovie('filename.swf'); // create blank container_mc at 0,0 /* DRAWING A GRID WITH AS */ stop(); var cols:Number = 50; var rows:Number = 50; var w:Number = stage.stageWidth/cols; var h:Number = stage.stageHeight/rows; var points:Array = Points.createPoints(rows, cols, w, h); //drawing rows for (var i:Number=0; i<rows+1; i++) { graphics.lineStyle(1, 0xEEEEEE); graphics.moveTo(0, points[i*(cols-1)].y-1); graphics.lineTo(points[cols-1].x+w, points[i*(cols-1)].y-1); } // drawing cols for (var j:Number=0; j<cols; j++) { graphics.lineStyle(1, 0xEEEEEE); graphics.moveTo(points[j].x-1, 0); graphics.lineTo(points[j].x-1, points[points.length-1].y+h); }
ACTIONSCRIPT 3.0
actionscript object-oriented programming (OOP)
- Structure: main class (starts the program) > classes (blueprint which describes characteristic and behaviour of the object) > objects (interoperating instances of classes in the program)
- store your flas and swfs in one directory (eg: /hulkdash/ )
- store the actionscript source files in /hulkdash/src/
- main class code should be in the file hulkdash.as (filename matches class name)
- use packages
actionscript, that infuriatingly intractable marshmellow fluff... so far i have only understood the most basic of concepts, but now i will try to learn it well.
- http://www.kirupa.com/developer/actionscript/spring.htm
- http://www.bit-101.com/tutorials/elasticity.html
alpha
// set movie clip's alpha (transparency) to 50% immediately myMC._alpha = 50% // set up alphacounter, if alphacounter is undefined then it sets it to 99. otherwise alphacounter is to decrease to 0 and delete itself. myMC.onEnterFrame = function (){ this.alphaCount = (this.alphaCount == undefined) ? 99 : --this.alphaCount; this._alpha = this.alphaCount; if (this._alpha <= 0) { delete this.onEnterFrame; } } // change it to ++ to make it go up
Codehinting
to keep with good practice you should keep to these common suffixes so that any programmer can read your code easily without finding it utterly incomprehensible.
variables:
- must start with letters, underscore or dollarsign.
- no hyphens or other punctuation besides the underscore.
- cannot start with a number.
- are case-insensitive, but keep it constant or you might get confused
- xxx_str // means the variable contains a string
- xxx_arr // means the variable contains an array
Conditionals
var message = "yellow"; 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" }
= assigning value == comparing values
loops
this sequence... trace (101); trace (102); trace (103); trace (104); trace (105); |
is equal to:
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); |
is also equal to:
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 } |
they all print:
101 102 103 104 105 |
functions
sample:
function area(height, width){ return height * width; } area1 = area(10,15); area2 = area(10,20); area3 = area(10,20);
event based execution
someObject.onSomeEvent = someFunction;
for example:
skaGirl.onRelease = dirtyskanking; // the object named skaGirl will dirtyskank when mouse is released function dirtyskanking () { this._parent._rotation = 360; // defines the rotation of the dirtyskanking. }
sample
quiz
button1.onRelease = function () { // on pressing button 1 this._parent.q1answer = 1; // assigning 1 to q1 answer this._parent.gotoAndStop("q2") // after which we go to frame labelled as q2 } if (q1answer == 3) { // if answer was right totalCorrect = totalCorrect++; // increase number of total correct qns by one }
confused about root, this, and parent? so am i!
this piece of code would work ON a frame on the main stage, one_mc being an object onnit.
function T1over() { _root.one_mc.gotoAndStop(2); getURL('javascript:modifyT1();'); } _root.one_mc.onRollOver = T1over;
actionscript and javascript
tips
- use frame labels rather than frame numbers. you could call a starting frame "init".
- dont use too many functions