/**
* Copyright hemingway ( http://wonderfl.net/user/hemingway )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/xUse
*/
/* ------------------------------- *
* TMA_Untitled_01 *
* "Matching Game" (INTERN) *
* Walker Dalton *
* ------------------------------- */
package {
import com . bit101 . components . *;
import flash . geom . ColorTransform;
import flash . text . *;
import flash . net . *;
import flash . geom . *;
import flash . system . *;
import flash . events . *;
import flash . display . *;
[SWF(widthPercent = 100, heightPercent = 100, frameRate = 60)]
public class TMA_Untitled extends Sprite {
//resources _
//stages:
var stageLoad : Sprite = new Sprite ();
//sprites:
var spriteLoadA : Sprite = new Sprite ();
var spriteLoadVar: Sprite = new Sprite ();
var spriteCont1 : Sprite = new Sprite ();
var spriteCont2 : Sprite = new Sprite ();
var spriteObj1_1 : Sprite = new Sprite ();
var spriteObj1_0 : Sprite = new Sprite ();
var spriteObj2_1 : Sprite = new Sprite ();
var spriteObj2_0 : Sprite = new Sprite ();
var spriteBtn1 : Sprite = new Sprite ();
var spriteBG : Sprite = new Sprite ();
//shapes:
var shapeLoadA : Shape = new Shape ();
var shapeLoadVar : Shape = new Shape ();
var shapeLoadInt : Shape = new Shape ();
var shapeRect1 : Shape = new Shape ();
var shapeRect2 : Shape = new Shape ();
var shapeRect3 : Shape = new Shape ();
var shapeCircle1_1 : Shape = new Shape ();
var shapeCircle1_0 : Shape = new Shape ();
var shapeCircle2_1 : Shape = new Shape ();
var shapeCircle2_0 : Shape = new Shape ();
var shapeBG : Shape = new Shape ();
//graphics:
// ...
//objects:
var objStringEvent : TextField = new TextField ();
var objStringScore : TextField = new TextField ();
var objStringInstr : TextField = new TextField ();
var objStringLoad : TextField = new TextField ();
var bmpLoaderWF : Loader = new Loader();
var bmpLoaderWF_y : Loader = new Loader();
var bmpLoaderWF_b : Loader = new Loader();
var bmpLoaderWF_g : Loader = new Loader();
var btnIntro : PushButton;
var btnInstr : PushButton;
var btnReset : PushButton;
var btnBasic : PushButton;
var btnAdvanced : PushButton;
var btnExpert : PushButton;
var lblDifficulty : Label;
var instrWndw : Window;
//variables:
var objStringConst : String = new String ();
//var curSpriteObj : String;
var curContObj : String;
var boolIntro : Boolean = true;
var boolInstr : Boolean = true;
var boolScore : Boolean;
var offsetX : Number;
var offsetY : Number;
var scoreC : Number;
//constants:
//Wheatfields
var WF_URL : URLRequest = new URLRequest("http://www.mediafire.com/convkey/9b68/n87ruzj9epg0a185g.jpg");
var WFy_URL : URLRequest = new URLRequest("http://www.mediafire.com/convkey/faf1/f2x1irtd50816dh5g.jpg");
var WFb_URL : URLRequest = new URLRequest("http://www.mediafire.com/convkey/5e45/88q506amu60apbu5g.jpg");
var WFg_URL : URLRequest = new URLRequest("http://www.mediafire.com/convkey/86f4/uysdlm168v93r1r5g.jpg");
//LinesIMG
var HL_URL : URLRequest = new URLRequest("");
var HLx_URL : URLRequest = new URLRequest("");
var HLy_URL : URLRequest = new URLRequest("");
var HLz_URL : URLRequest = new URLRequest("");
//(Wheatfields/Lines)
var INTRO_URL : URLRequest = new URLRequest("");
public function TMA_Untitled() {
//add our listeners, only listen for "MOUSE_MOVE" contextually (efficiency).. hence why it's called at an event
stage.addEventListener (MouseEvent.MOUSE_DOWN , Mouse_Events);
stage.addEventListener (MouseEvent.MOUSE_UP , Mouse_Events);
stage.addEventListener (MouseEvent.MOUSE_OVER , Mouse_Events);
stage.addEventListener (MouseEvent.MOUSE_OUT , Mouse_Events);
Setup();
function Setup() : void{
spriteCont1 .name = "contObject1";
spriteCont2 .name = "contObject2";
spriteObj1_1 .name = "borderSprite1";
spriteObj1_0 .name = "spriteObject1";
spriteObj2_1 .name = "borderSprite2";
spriteObj2_0 .name = "spriteObject2";
spriteBtn1 .name = "spriteBtn1";
bmpLoaderWF .name = "WF";
bmpLoaderWF_y.name = "WF_y";
bmpLoaderWF_b.name = "WF_b";
bmpLoaderWF_g.name = "WF_g";
spriteLoadA .name = "spriteLoadA";
spriteLoadVar.name = "spriteLoadVar";
stageLoad .name = "stageLoad";
spriteBG .name = "bgS";
spriteLoadA .x = stage.stageWidth/10;
spriteLoadA .y = stage.stageHeight/2;
spriteLoadVar.x = spriteLoadA.x+2;
spriteLoadVar.y = spriteLoadA.y+2;
stageLoad .x = stage.stageWidth*0.05;
stageLoad .y = stage.stageHeight*0.05;
spriteBG .x = -stage.stageWidth
Define_Rect (shapeBG, 0xE0E0E0, 0, 0, (stage.stageWidth*3), stage.stageHeight, 0x858585, 6);
Define_Rect (shapeLoadA, 0x000000, 0, 0, (stage.stageWidth*0.8), 40, 0x000000, 0);
Define_Rect (shapeLoadInt, 0xFFFFCC, 0, 0, (stage.stageWidth*0.90), (stage.stageHeight*0.90), 0x000000, 2);
btnIntro = new PushButton (stage, (stage.stageWidth*0.65), (stage.stageHeight*0.85), "Start", Obj_Events);
if (boolIntro == true){
addChild(spriteBG);
addChild(stageLoad);
addChild(objStringLoad);
var txtFormat : TextFormat = new TextFormat;
txtFormat.size = 20;
Define_TextField (objStringLoad, shapeLoadInt.width*0.15, shapeLoadInt.height*0.15, " ''The Art of Seeing Art''\n\n Match up the given colors with those in the works of art. \n\n This game has 3 levels of difficulty:\n\n - Basic Colors\n - Learning to Look\n - Color Expert!\n\n (choose a difficulty to continue)", (objStringLoad.width*4), (objStringLoad.height*2), false, txtFormat);
spriteBG.addChild(shapeBG);
stageLoad.addChild(shapeLoadInt);
}else{
//draw elements in order of proper index
//apply coordinate & naming properties
addChild(spriteLoadA);
addChild(spriteLoadVar);
spriteLoadA.addChild(shapeLoadA);
spriteLoadVar.addChild(shapeLoadVar);
bmpLoaderWF.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event) :void{Loader_Events(e, bmpLoaderWF.name)});
bmpLoaderWF.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, Stage_Events);
bmpLoaderWF.load(WF_URL);
spriteCont1 .x = stage.stageWidth/20;
spriteCont1 .y = stage.stageHeight/20;
spriteCont2 .x = -(stage.stageWidth/3);
spriteCont2 .y = stage.stageHeight/40;
spriteBtn1 .x = stage.stageWidth*0.843;
spriteBtn1 .y = stage.stageHeight*0.843;
spriteObj1_1 .x = spriteObj1_0.x = stage.stageWidth/4;
spriteObj1_1 .y = spriteObj1_0.y = 375;
spriteObj2_1 .x = spriteObj2_0.x = stage.stageWidth/2;
spriteObj2_1 .y = spriteObj2_0.y = 375;
//render "border" objects first to avoid correcting z-order
addChild (spriteCont1);
addChild (spriteCont2);
addChild (objStringInstr);
addChild (spriteBtn1);
addChild (spriteObj1_1);
addChild (spriteObj1_0);
addChild (spriteObj2_1);
addChild (spriteObj2_0);
//add our objects to their cooresponding sprites
spriteCont1 .addChild (shapeRect1);
spriteCont2 .addChild (shapeRect3);
spriteBtn1 .addChild (shapeRect2);
spriteObj1_1 .addChild (shapeCircle1_1);
spriteObj1_0 .addChild (shapeCircle1_0);
spriteObj2_1 .addChild (shapeCircle2_1);
spriteObj2_0 .addChild (shapeCircle2_0);
//define within 'template' functions for efficiency
Define_Rect (shapeRect1 , 0xFFFFFF , 0 , 0 , (stage.stageWidth - (spriteCont1.x*2)) , 275 , 0x000000 , 2);
Define_Rect (shapeRect3 , 0xFFFFFF , 0 , 0 , 150 , 300 , 0x000000 , 2);
Define_Circle (shapeCircle1_1 , 0x000000 , 0 , 0 , 25);
Define_Circle (shapeCircle1_0 , 0xFFFFFF , 0 , 0 , 23);
Define_Circle (shapeCircle2_1 , 0x000000 , 0 , 0 , 25);
Define_Circle (shapeCircle2_0 , 0xFFFFFF , 0 , 0 , 23);
btnReset = new PushButton(stage, 465, (stage.stageHeight/38), "Reset", Reset_Stage);
btnInstr = new PushButton(stage, 465, (btnReset.y + 25), "Instructions", Obj_Events);
Define_TextField (objStringInstr, (spriteCont2.x + 5), (spriteCont2.y + 5), "Matching Game \n - instructions \n - etc ...", objStringInstr.width, objStringInstr.height);
}
}
//template function for checking collision, again, due to having efficiency in mind
function Collision_Check(objRef : Object, objTarget : Object) : Boolean{
//compare coordinates of two objects
if (objRef.x > objTarget.x && objRef.x < (objTarget.x + objTarget.width) &&
objRef.y > objTarget.y && objRef.y < (objTarget.y + objTarget.height)){
return true;
}
return false;
}
//reset the stage; at end of game or for new bitmaps
function Reset_Stage() : void{
while (stage.numChildren>0){
removeChildAt(0);
}
boolIntro = true;
}
function Remove_Children(objRef : Object) : void{
if (objRef.numChildren != 0 && objRef.numChildren != 1){
while (objRef.numChildren > 1){
objRef.removeChildAt(1);
}
}
}
function Stage_Events(loadEvent : ProgressEvent) : void{
shapeLoadVar.scaleX = loadEvent.bytesLoaded/loadEvent.bytesTotal;
if (loadEvent.bytesLoaded == loadEvent.bytesTotal){
removeChild(spriteLoadA);
removeChild(spriteLoadVar);
}
}
function Loader_Events(loadEvent : Event, objRef : String) : void{
if (objRef == "WF"){
bmpLoaderWF.width = (spriteCont1.width - 2);
bmpLoaderWF.height = (spriteCont1.height - 2);
Remove_Children(spriteCont1);
spriteCont1.addChild(bmpLoaderWF);
bmpLoaderWF.contentLoaderInfo.removeEventListener(Event.COMPLETE, Loader_Events);
}else if (objRef == "WF_y"){
bmpLoaderWF_y.width = (spriteCont1.width - 2);
bmpLoaderWF_y.height = (spriteCont1.height - 2);
Remove_Children(spriteCont1);
spriteCont1.addChild(bmpLoaderWF_y);
bmpLoaderWF_y.contentLoaderInfo.removeEventListener(Event.COMPLETE, Loader_Events);
}else if (objRef == "WF_b"){
bmpLoaderWF_b.width = (spriteCont1.width - 2);
bmpLoaderWF_b.height = (spriteCont1.height - 2);
Remove_Children(spriteCont1);
spriteCont1.addChild(bmpLoaderWF_b);
bmpLoaderWF_b.contentLoaderInfo.removeEventListener(Event.COMPLETE, Loader_Events);
}else if (objRef == "WF_g"){
bmpLoaderWF_g.width = (spriteCont1.width - 2);
bmpLoaderWF_g.height = (spriteCont1.height - 2);
Remove_Children(spriteCont1);
spriteCont1.addChild(bmpLoaderWF_g);
bmpLoaderWF_g.contentLoaderInfo.removeEventListener(Event.COMPLETE, Loader_Events);
}else if (objRef == "diff1RBtn"){
lblDifficulty = new Label(stage, 100, 230, "BASIC");
}else if (objRef == "diff2RBtn"){
lblDifficulty = new Label(stage, 100, 330, "ADVANCED");
}else if (objRef == "diff3RBtn"){
lblDifficulty = new Label(stage, 100, 320, "EXPERT");
}
}
function Obj_Events(objEvent: Event) : void{
if (boolIntro == true){
curContObj = "Wheatfields";
removeChild(stageLoad);
btnIntro.x = stage.stageWidth*3;
removeChild(objStringLoad);
//Reset_Stage();
boolIntro = false;
Setup();
}else{
if (boolInstr == true){
removeChild(spriteCont2);
removeChild(objStringInstr);
}else{
addChild(spriteCont2);
addChild(objStringInstr);
}
boolInstr =! boolInstr;
}
}
//multi-purpose switch function for object mouse events
function Mouse_Events(objEvent: MouseEvent) : void{
Define_TextField(objStringEvent, 22, (spriteCont1.height + 22), objEvent.target.toString(), objStringEvent.width, objStringEvent.height);
if (objEvent.target.name.search("sprite") > - 1){
switch (objEvent.type){
case "mouseDown":
//if (objEvent.target.name == "spriteBtnInt"){
//}else{
objEvent.target.transform.colorTransform = new ColorTransform(0,0,1);
addChild(objStringEvent);
offsetX = objEvent.stageX;
offsetY = objEvent.stageY;
objEvent.target.addEventListener(MouseEvent.MOUSE_MOVE, Mouse_Events);
//}
break;
case "mouseUp":
objEvent.target.removeEventListener(MouseEvent.MOUSE_MOVE, Mouse_Events);
if (Collision_Check(objEvent.target, spriteCont1) == true){
objEvent.target.transform.colorTransform = new ColorTransform(0,1,0);
if (curContObj == "Wheatfields"){
if (objEvent.target.name == "spriteObject1"){
bmpLoaderWF_y.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event) :void{Loader_Events(e, bmpLoaderWF_y.name)});
bmpLoaderWF_y.load(WFy_URL);
}else if (objEvent.target.name == "spriteObject2"){
bmpLoaderWF_b.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event) :void{Loader_Events(e, bmpLoaderWF_b.name)});
bmpLoaderWF_b.load(WFb_URL);
}
} else if (curContObj == "Hartley"){
//conditionals to load hartley
}
boolScore = true;
scoreC += 1;
if (boolScore == true){
addChild(objStringScore);
}
objStringConst = "Score: " + scoreC;
objStringScore.type = TextFieldType.INPUT
Define_TextField(objStringScore, 22, 4, objStringConst, objStringScore.width, objStringScore.height);
}else{
objEvent.target.transform.colorTransform = new ColorTransform(1,0,0);
}
removeChild(objStringEvent);
break;
case "mouseOver" :
//if (objEvent.target.name == "spriteBtnInt"){
//}else{
objEvent.target.transform.colorTransform = new ColorTransform(0,0,1);
//}
break;
case "mouseOut" :
//if (objEvent.target.name == "spriteBtnInt"){
//}else{
if (Collision_Check(objEvent.target, spriteCont1) == true){
objEvent.target.transform.colorTransform = new ColorTransform(0,1,0);
}else{
objEvent.target.transform.colorTransform = new ColorTransform(1,0,0);
}
//}
break;
case "mouseMove":
if (objEvent.target.name == "spriteObject1") {
spriteObj1_1.x = objEvent.target.x = objEvent.stageX;
spriteObj1_1.y = objEvent.target.y = objEvent.stageY;
} else if (objEvent.target.name == "spriteObject2") {
spriteObj2_1.x = objEvent.target.x = objEvent.stageX;
spriteObj2_1.y = objEvent.target.y = objEvent.stageY;
}
break;
}
}
}
}
public function Define_Rect(objRef : Object, objColor : Number, objX : Number,
objY : Number, objW : Number, objH : Number,
lineColor : Number, lineThick : Number) : void{
//shape_rectangle
objRef.graphics.lineStyle (lineThick , lineColor);
objRef.graphics.beginFill (objColor , 1);
objRef.graphics.drawRect (objX , objY , objW , objH);
objRef.graphics.endFill ();
}
public function Define_Circle(objRef : Object, objColor : Number, objX : Number,
objY : Number, objR : Number, lineColor : Number = 0x0000000,
lineThick : Number = 0) : void{
//shape_circle
objRef.graphics.lineStyle (lineThick , lineColor);
objRef.graphics.beginFill (objColor , 1);
objRef.graphics.drawCircle (objX , objY , objR);
objRef.graphics.endFill ();
}
public function Define_TextField(objRef : Object, objX : Number, objY : Number,
objText : String, objW : Number, objH : Number,
objBorder : Boolean = false, txtFormat : TextFormat = null) : void{
//textfield
//var format:TextFormat = new TextFormat();
//var font:Font = arrFonts[0];
//format.font = font.Helvitica;
objRef.x = objX;
objRef.y = objY;
objRef.text = objText;
objRef.width = objW;
objRef.height = objH;
objRef.border = objBorder;
if (txtFormat != null){
objRef.defaultTextFormat = txtFormat;
}
}
//public function Define_Bitmap(objSprite : Sprite, objBitmap : BitmapData, objX : Number, objY : Number, objW : Number, objH : Number) : void{
//bitmap
//objSprite.graphics.beginBitmapFill (objBitmap , null , false , true);
//objSprite.graphics.drawRect (objX , objY , objW , objH);
//objSprite.graphics.endFill ();
//}
}
}