PDA

Volledige versie bekijken : dynamisch objecten aanmaken


Jeppey
%Europe/Berlin %507 %2007, 13:11
Ik ben bezig met een spelletje waar men geld bij kan inzetten (fictief geld). Nu is het de bedoeling dat ik de muntwaarde van de movieclip uitlees en dat kan gemakkelijk door mc.muntwaarde.

Het probleem waar ik tegenaan loop is dat ik aan de hand van die muntwaarde een nieuw object moet creëren.

Dit is het idee van het nieuwe object:
var tmp = new munt + mc.muntwaarde + ();

Weet iemand hoe ik dit moet aanpakken in AS3?

Sjeiti
%Europe/Berlin %723 %2007, 18:22
Je bedoelt dat je MovieClip moet extenden om er variabelen aan te hangen? Dat klopt en gaat ongeveer zo:package flash.display {
import flash.display.Sprite;
public class Geld extends Sprite {
public var iWaarde:int;
public function Geld(_iWaarde:int=0) {
iWaarde = _iWaarde;
super();
}
}
}
en dan var mTientje:Geld = new Geld(10);
trace(mTientje.iWaarde); // output 10
... of bedoel je nou compleet iets anders?

TheDutch
%Europe/Berlin %769 %2007, 19:28
Jeppy, volgensmij is het niet mogelijk om dynamisch een class te instantieëren. Daarvoor moet je het "Simple Factory Pattern" gebruiken die aan de hand van de muntwaarde de juiste class instantieërt en die teruggeeft. Voorbeeld (bron: Advanced ActionScript 3 with Design Patterns (http://safari.oreilly.com/0321426568)):

package
{
public class GameFactory
{
public static function createGame(gameType:String):*
{
switch(gameType)
{
case "football":
return new FootballGame();
case "baseball":
return new BaseballGame();
case "basketball":
default:
return new BasketballGame();
}
}
}
}

In dit voorbeeld gebruik ik een "*" als return type bij de method "createGame" omdat ik niet weet of je bekend bent met interfaces. Eigenlijk zou je een interface moeten maken waar al jouw Munt class gebruik van maken en die interface als return type gebruiken.

Ik hoop dat je hier wat mee kunt :).

Jeppey
%Europe/Berlin %871 %2007, 21:55
Bedankt the Dutch, zoiets moet het ongeveer zijn. :)