-deprecated-

by hemingway
deprecated once again, by "RE: TMA_Untilted_01"; archived for reference
♥0 | Line 323 | Modified 2012-07-24 04:17:27 | MIT License
play

ActionScript3 source code

/**
 * 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         ();
        //}
    }
}