Array voorbeeldje inclusief Z as
Posted at January 02, 2011
You’ve found a dinosaur. This is one of my first posts about programming and the code quality is very poor, it is only here for archiving purposes.
Laatst ben ik bezig geweest met arrays in arrays, dit heb ik gelijk gecombineerd met de Z as. Hieronder staat de code, je kan dit bekijken of gebruiken (voor deeltoets 3?). Ik zou het leuk vinden als je mij dit laat weten.
De code staat uitgebreid toegelicht met commentaar zodat je alles goed na kan lezen. Hetgeen wat ik wou testen was arrays binnen arrays, als je dat nodig hebt kan je in mijn code kijken hoe het werkt. Ook heb ik een simpele animatie toegevoegd om gelijk te laten zien dat het ook iets kan (ik haal niet het volle uit de array binnen array constructie maar je krijgt toch een beeld).
Hier is het eindresultaat gecompileerd. Hier is een ander voorbeeldje wat ik met de opbouw binnen 5 minuten heb gemaakt.
En hier is de code:
/** Arrays.as -- Dec 16, 2010
*
* Beschrijving: bestand ter info voor
* mede studenten, hopelijk heeft iemand
* er iets aan.
*
* @mike van rossum
*
* Copyleft 2010, all wrongs reversed.
*/
package
{
// Importeer benodigde classes
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
public class Arrays extends Sprite
{
// Variabele declaratie
public var xRij:Array;
// Constructor functie
public function Arrays()
{
// Stel de stage in op niet meeschalen
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
addEventListener(Event.ENTER_FRAME, beweegAlles);
xRij = new Array();
//hierboven maa ik een nieuw array aan genaamd xRij
for(var i:int=0; i<10; i++)
{ //deze for loop zegt dat de code hierbinnen tien keer uitgevoerd wordt
xRij[i] = new Array();
//hier maar ik een array aan BINNEN IN de array xRij
for (var j:int=0; j<10; j++)
{ //deze loop zorgt ervoor dat wat hierbinnen staat tien keer uitgevoerd wordt,
//deze loop zelf wordt al 10 keer uitgevoerd dus in totaal
//wordt de code hieronder 100 keer uitgevoerd.
xRij[i][j] = new Array();
//binnen de Array binnenin xRij maak ik nog een array aan.
for (var k:int=0; k<10; k++)
{//de code hierin run ik weer 10 keer, deze loop wordt 100 keer uitgevoerd dus
//in totaal wordt de onderstaande code 1000 keer uitgevoerd.
xRij[i][j][k] = new Array();
//binnen de array binnenin de array binnenin de array xRij komt nog een Array
var bal:Sprite = new Sprite;
//maak een bal
if (i == j)
{ // als de bal in de array xRij[i] staat die hetzelfde nummertje heeft als xRij[i][j] wordt hij rood
bal.graphics.beginFill(0xff0000);
}
else
{//anders wordt hij blauw
bal.graphics.beginFill(0x0000ff);
}
bal.graphics.drawCircle(0,0,5);
//zet de x van de bal op een plek afhankelijk van in welke positie I is.
bal.x = i * 100 + 100 + 5*k;
//zet de y van de bal op een plek afhankelijk van in welke positie J is.
bal.y = j * 50 + 50;
//zet de z van de bal op een plek afhankelijk van in welke positie I, J en K zijn.
bal.z = k*3 + j*2 + i*2;
//voeg hem toe aan de display
addChild(bal);
//voeg hem toe aan de array, dit wordt dus in totaal 1000x gedaan
xRij[i][j][k] = bal;
}
}
}
}
// Eigen functies
public function beweegAlles(event:Event):void
{
for(var i:int=0; i<10; i++)
{
for (var j:int=0; j<10; j++)
{
for (var k:int=0; k<10; k++)
{ //zelfde for loop om alles uit te lezen
//de vars zijn lokaal, dat betekend dat ze alleen bestaan binnen deze functie
//dit zijn andere I, J, K dan hierboven maar toevallig hebben ze elke keer dezelfde waarde.
xRij[i][j][k].z++;
//verplaats ze naar achter (z as)
xRij[i][j][k].alpha -= .1;
//maak ze minder zichtbaar
if (xRij[i][j][k].z > 40)
{//wanneer ze te ver naar achter zijn:
xRij[i][j][k].z -= 40
xRij[i][j][k].alpha = 1;
// gooi ze naar voren en maak ze zichtbaar
}
}
}
}
}
}