Denk jij nog een leuk of nuttig flash script te hebben, post het dan in de scriptbase !

vinTagesworld/flash scripts/games/flash memorie spel maken


flash memorie spel maken

Toegevoegd door: vinTage op 29-10-2008




Beschrijving

Een compleet script waarmee je dus je eigen flash memorie spel kan maken.



Code

actionscript code

//deze kan je aanpassen/uitbreiden
var kaartArray:Array = new Array(kaart1, kaart2, kaart3, kaart4);//identifiers uit library

///////SCRIPT////////

//kaartarray dupliceren en husselen
var k2:Array = kaartArray.concat(kaartArray);
var k3:Array = shuffle(k2);


//vars tbv positionering
var xPos:Number = 0;
var yPos:Number = 0;
var tellertje:Number = 0;
//vars tbv onthouden welke kaart er gedraaid was
var gedraait:Boolean = false;
var gedraait2:Boolean = false;
var tempString:String;
var onthoud:String;
var huidig:String;


//op de scene plaatsen/uitlijnen/naam en functies toekennen
for (var i:Number = 0; i < k3.length; i++)
{
  var k:MovieClip = new k3[i]();
  //positioneren
  xPos = tellertje * (k.width + 10);
  if (xPos + (k.width + 10) > stage.stageWidth)
  {
    yPos += k.height + 10;
    tellertje = 0;
  }
  k.x = tellertje * (k.width + 10);
  k.y = yPos;
  tellertje ++;

  //herkenbaar maken om verder te controleren
  k.name = "kaart"+i;
  k.identifier = k3[i];

  //buttonmeuk toekennen
  k.addEventListener(MouseEvent.CLICK, draai);
  k.buttonMode = true;
  k.mouseChildren = false;

  addChild(k);
}

function draai(e:Event):void
{
  if (!gedraait2)
  {
    e.currentTarget.gotoAndStop(2);
    huidig = e.currentTarget.name;
    if (!gedraait)
    {
      //eerste kaart omdraaien
      gedraait = true;
      onthoud = e.currentTarget.name;
      tempString = e.currentTarget.identifier;

      //listener weghalen, omdat je anders 2 keer op dezelfde kaart kan klikken en deze zal dus verdwijnen
      e.currentTarget.removeEventListener(MouseEvent.CLICK, draai);
    }
    else
    {
      gedraait2 = true;
      //tweede kaart draaien
      if (e.currentTarget.identifier == tempString)
      {
        //matched, dus écht weghalen
        var deleteTimer:Timer = new Timer(1000, 1);
        deleteTimer.addEventListener("timer", verwijder);
        deleteTimer.start();
      }
      else
      {
        //matched niet, dus weer omdraaien en de listener teruggeven (timertje, anders zie je niet welke kaart er lag)
        var resetTimer:Timer = new Timer(1000, 1);
        resetTimer.addEventListener("timer", reset);
        resetTimer.start();
      }
    }
  }
}

//omgedraaide kaarten resetten (dmv timertje)
function reset(event:TimerEvent):void
{
  MovieClip(getChildByName(onthoud)).gotoAndStop(1);
  getChildByName(onthoud).addEventListener(MouseEvent.CLICK, draai);
  MovieClip(getChildByName(huidig)).gotoAndStop(1);
  getChildByName(huidig).addEventListener(MouseEvent.CLICK, draai);
  gedraait = false;
  gedraait2 = false;
}

//kaarten verwijderen (dmv timertje)
function verwijder(event:TimerEvent):void
{
  removeChild(MovieClip(getChildByName(huidig)));
  removeChild(MovieClip(getChildByName(onthoud)));
  gedraait = false;
  gedraait2 = false;
}

//hussel functie
function shuffle(arr:Array):Array
{
  var shuffled:Array = arr.slice();
  for (var i:int=0; i<arr.length; i++)
  {
    var element:Object = shuffled[i];
    var rnd:int = Math.floor(arr.length * Math.random());
    shuffled[i] = shuffled[rnd];
    shuffled[rnd] = element;
  }
  return shuffled;
}       
 



Gebruik

actionscript code

PREVIEW => http://www.vintagesworld.be/hulp/memorie/index.html (met maar 4 kaartje, kaarten heel simpel zelf te maken)

/*
Maak verschillende "kaarten", bestaande uit 2 frames.
Op het eerste frame plaats je de achterkant van de kaart en op frame2 plaats je de image, op alle2 de frames een stop().
Exporteer deze "kaarten" voor actionscript en gebruik de identifiers in het kaartArray, de rest word verzorgt door het script.
Have fun ;-)     
*/
         
 



Download de bijbehorende fla file


Share |

Je moet aangemeld zijn om commentaar te kunnen lezen of geven.