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
                    }
                }
            }
        }
    }
}

Posted at January 02, 2011, under AS3.