[AS2] Tile aanspreken uit een array gegenereerd vlak

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • gybrus
  • Registratie: Juli 2008
  • Laatst online: 04-09 09:27
Beste mede tweakers,
Ik zit met een klein dilemma, ik probeer namelijk met behulp van een korte array een vak te genereren bestaande uit tiles.
Dit lukt maar als ik deze per tile probeer aan te spreken zit ik met een probleem, ik krijg telkens de laatste tile te pakken ookal hover ik over een andere tile. (deze staat ook het hoogst in de display list)


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var roomSizes:Array = new Array( 10, 5, 64);

function buildRoom(room) {
    _root.attachMovie("empty", "tiles", ++d);
    var roomWidth = room[0];
    var roomHeight = room[1];
    var tileSize = room[2];
    for (var i = 0; i<roomHeight; ++i)
    {
        for (var j = 0; j<roomWidth; ++j)
        {
            var name = "t_"+i+"_"+j;
            tiles.attachMovie("tile", name, (1+i)*100+j);
            tiles[name]._x = (j*tileSize+50);
            tiles[name]._y = (i*tileSize+50);
            
            tiles[name].onRollOver = function():Void {
                        trace(tiles[name]);
            }
        }
    }
}

buildRoom(roomSizes);


EDIT: Ik heb geprobeerd om een functie ernaast te schrijven wat wel werkte als ik een movieclip in de scene sleep met een bepaalde instance name, maar de juiste instance name te pakken lukt mij om een of andere reden ookal niet...

[ Voor 11% gewijzigd door gybrus op 16-11-2010 19:46 ]

KEVIN DIERKX | DISTORTED FUSION | GITHUB


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Dit is toch écht een klassieke beginnersfout. Ga je serieus vertellen dat je hier niet met 5 minuten googlen achter kunt komen?

Even zoeken op "actionscript for loop event handler" en je krijgt zowaar meerdere malen antwoorden uit de eerste site in de lijst zoekresultaten.

En om het helemaal even duidelijk te maken wordt vanuit daar reeds twee maal doorverwezen naar een goed opgestelde, duidelijke uitleg.


(PS: Wat ben je in hemelsnaam heden ten dage nog met ActionScript 2 aan het doen?)

[ Voor 5% gewijzigd door R4gnax op 16-11-2010 21:51 ]


Acties:
  • 0 Henk 'm!

  • gybrus
  • Registratie: Juli 2008
  • Laatst online: 04-09 09:27
He verrek was ik het _root gedeelte vergeten.. om eerlijk te zijn las ik daar de hele tijd overheen :o
In ieder geval bedankt voor de hulp.

EDIT: Oohja het werkt nu >:)

[ Voor 10% gewijzigd door gybrus op 16-11-2010 21:59 ]

KEVIN DIERKX | DISTORTED FUSION | GITHUB


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
gybrus schreef op dinsdag 16 november 2010 @ 21:58:
He verrek was ik het _root gedeelte vergeten.. om eerlijk te zijn las ik daar de hele tijd overheen :o
In ieder geval bedankt voor de hulp.

EDIT: Oohja het werkt nu >:)
Nu alleen nog leren omgaan met strong typing en de beschikbare API functies en taal structuren.
Want zeg nou zelf, dit leest een stukje beter:

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function buildRoom(roomSize:Point, tileSize:Number):Void
{
  var tiles:MovieClip = _root.attachMovie(
    "empty", "tiles", this.getNextHighestDepth()
  );
  
  for (var i:Number = 0; i < roomSize.y; ++i)
  {
    for (var j:Number = 0; j < roomSize.x; ++j)
    {
      var name:String = ["t", i, j].join("_");
      
      var tileInit:Object = {
        _x: j * tileSize + 50,
        _y: i * tileSize + 50,

        onRollOver: function():Void {
          var tile:MovieClip = this;
          trace(tile);
        }
      };
                  
      tiles.attachMovie(
        "tile", name, this.getNextHighestDepth(), tileInit
      )
    }
  }
}

buildRoom(new Point(10, 5), 64);