PDA

Volledige versie bekijken : Variable van andere MovieClips veranderen


damagex
%Europe/Berlin %813 %2010, 19:31
Hallo iedereen op FlashFocus.nl,

Ik ben sinds een paar dagen begonnen met het ontwikkelen van Flash Games, maar kom echter tot een probleem waar ik geen raad mee weet. Ik heb ervoor gekozen om te beginnen met een simpel Boter, Kaas & Eieren spel.

Ik loop vast op het volgende:
Ik heb een speelveld met 9 vakjes, elk vakje heeft zijn eigen instance naam.

|a1|a2|a3|
|b1|b2|b3|
|c1|c2|c3|
Dat zijn allemaal dezelfde MovieClips met de naam 'square'.
Nu heb ik op de tijdlijn van de MovieClip 'square' het volgende script staan:
stop();
this.addEventListener(MouseEvent.ROLL_OVER, onRollOverHandler);
this.addEventListener(MouseEvent.ROLL_OUT, onRollOutHandler);
this.addEventListener(MouseEvent.CLICK, onClickHandler);
var sq_status:Number = 0;
var player:Number = 0;

function onRollOverHandler(event:MouseEvent):void {
if (sq_status == 0) {
if (player == 1) {
this.gotoAndStop(2);
} else {
this.gotoAndStop(3);
}
}
}

function onRollOutHandler(event:MouseEvent):void {
if (sq_status == 0) {
this.gotoAndStop(1);
}
}

function onClickHandler(event:MouseEvent):void {
if (player == 1) {
this.gotoAndStop(2);
player = 1;
} else {
this.gotoAndStop(3);
player = 0;
}
sq_status = 1;
}Hiermee gebeurt het volgende:
Als je met de muis over een vakje gaat, dan komt er een blauwe X te staan, aangezien dat de eerste speler is die speelt. Als je dan met je muis er weer vanaf gaat wordt het vakje weer blank.

Wanneer je op een vakje klikt, dan blijft er een blauw kruisje staan, maar wordt de variable 'player' niet veranderd naar 1 bij de andere MovieClips, maar alleen bij de betreffende MovieClip. Dit is dus helemaal niet nodig.

Hoe kan ik er nu voor zorgen dat wanneer ik op een vakje klik hij ook de 'player' variable van de andere vakjes mee veranderd?

Bijvoorbaat dank,
DaMaGeX

e.l.dam
%Europe/Berlin %519 %2010, 12:28
Als je het nou zo doet (niet in goede as3 code maar you get the idea):


var turn:int = 1; // speler 1 aan zet

//mouse over function
if (turn == 1) {
e.currentTarget.gotoAndStop(2);
} else {
e.currentTarget.gotoAndStop(3);
}

// click function
e.currentTarget.isClicked = true // je kunt gewoon een variable aanmaken op je movieclip die je ter plekke verzint

// mouse out function
if (!e.currentTarget.isClicked) {
e.currentTarget.gotoAndStop(1); // niet isClicked -> terug naar positie 1
}



Verder zat ik nog te denken aan een "alternative manier" om te checken of je 3 op een rij hebt (en misschien een AI er aan te koppelen). Je kunt je 9 mc's deze waardes geven:

816
357
492

Op die manier is de som van elke rij/diagonaal gelijk aan 15. Op die manier kun je "makkelijk" een ai maken (computer begint met random een plek kiezen, daarna kijkt ie of er nog 2 vakjes vrij zijn die samen met de al gekozen positie 15 vormen, zo ja pakt ie zo'n vakje, laatste beurt same idea).

Succes.

e.l.dam
%Europe/Berlin %459 %2010, 11:02
Ik vond het een oké idee om over na te denken, heb active.tutsplus geschreven of ik een tutorial mocht schrijven en ben daar nu mee bezig. Ik ben echter afgestapt van het 'bij elkaar optellen tot je 15 hebt' idee, omdat dit vrij ingewikkeld wordt (voor zo'n simpel spel). Wat ik nu doe: kijken welke 8 combinaties winnende combinatie is dmv een lijst.

Weet niet of je er al uit bent, maar met een beetje geluk over een week of 2 dus een tutorial van mij op tutsplus ;)

e.l.dam
%Europe/Berlin %303 %2010, 08:16
http://active.tutsplus.com/tutorials/games/build-an-intelligent-tic-tac-toe-game-with-as3/

Bij deze (hoewel ik betwijfel of damagex nog terug te zien is op FlashFocus :()

damagex
%Europe/Berlin %717 %2011, 17:12
Bedankt voor je berichtje, dit project heb ik stop gezet.
Wegens verhuizing heb ik geen tijd meer gehad om flash
te leren, maar nu ben ik weer volop in de boeken om te
kijken of het wel lukt. :)