Thank you Eduardo and João.

Data format should be independent of the way data is shown on screen.
>

Yes, this principle made things clearer. Since it is indeed a flat (1D)
array, I shouldn't be converting it to a 2D array only to "pass"
presentation logic to the data itself.

However, there are times of course that the data itself is of a 2D or 3D
nature. And hey, I may even eventually want to render a 3D datum in a 2D
fashion **but** I shouldn't touch the data :)

Cheers,

Marcelo.



On Sun, May 11, 2008 at 12:27 PM, João Saleiro <[EMAIL PROTECTED]>
wrote:

>  Data is one thing, data visualization is another. Data format should be
> independent of the way data is shown on screen.
>
> I normally do it like this:
>
>        private static const ELEMENTS_PER_LINE:Number = 3;
>
>         private function getGridPosition(i:Number):Point
>         {
>             var p:Point = new Point();
>
>             p.y = Math.floor(i / ELEMENTS_PER_LINE);
>             p.x = i % ELEMENTS_PER_LINE;
>
>             return p;
>         }
>
>         public function addElements(elements:Array):void
>         {
>             for (var i:Number = 0; i < elements.length; ++i)
>             {
>                 var obj:Object = elements[i];
>
>                 var instance:MyClass= new MyClass(obj);
>                 addChild(instance);
>
>                 var p:Point = getGridPosition(i);
>
>                 instance.x = (instance.width * p.x);
>                 instance.y = (instance.height * p.y);
>             }
>         }
>
>
> Hope it helps.
>
> João Saleiro
>
>    João Saleiro
>
> Email/MSN: [EMAIL PROTECTED]
> Skype: joao.saleiro
> Tel: +351 916 077 097 / +351 968 203 370
> WWW: http://www.webfuel.pt
>
>
> Marcelo de Moraes Serpa wrote:
>
> Hello,
>
> I've been doing some study on how to create a grid-like representation of
> flat-based arrays.
>
> Considering you are working with a data backend that will server you a
> one-dimensional array like this:
>
> var arr = [1,2,3,4,5,6,7,8,9,0]
>
> And you would like to render in in your flash applications (or whatever)
> like a grid/matrix:
>
> 1,2,3,4
> 5,6,7,8
> 9,0
>
> The way I do it currently:
>
> <as2 code>
>
> //First I decide on a condition to when I will "reset the column pointer
> and do a line break"
>
> var MAX_COLS = 4;
>
> for (i=0; i < arr.length; i++)
> {
>    if (i % MAX_COLS == 0 && i != 0)
>     {
>          rows++;
>      }
>
>     var thumb_mc.x = i*(thumb_mc.width) + offset;
>     var thumb_mc-y = rows*(thumb_mc.height) + offset;
>
> }
>
> </as2 code>
>
> Not that this is pseudo-code, I haven't actually tested it, but you can
> get the idea.
>
> I could have used a cols variable in the place of using the i counter and
> just replace the condition with the modulus with a "if cols > MAX_COLS",
> since I would be reseting (cols = 0) this var when this condition were true:
>
> if (cols >= MAX_COLS)
> {
>   cols = 0;
>   rows++
> }
>
> Now, what bothering me is the two dimensional array usually used in
> tile-based games.
>
> I was thinking this morning that maybe it would be easier to just convert
> the flat-based array to a two dimensional one beforehand, like this:
>
> var arr = [[1,2,3,4],[5,6,7,8],[9,0]];
>
> and then use a loop like:
>
> for (i = 0; i < arr.length; i ++) {
>   for (j = 0; j < arr[i].lentgh; j++) {
>      thumb_mc.x = i*thumb_mc.width + offset;
>      thumb_mc.y = j*thumb_mc.height + offset;
>   }
> }
>
> Please, correct me if I'm wrong on any of these points/code.
>
> What do you think?
>
> Thanks in advance,
>
> PS.: Btw, is there a book or something that has recipes/patterns for such
> problems ? (like:  ways to render data in  a grid-based fashion).
>
> Marcelo.
>
>
>
>
>
>
>
>
>
> ------------------------------
>
> _______________________________________________
> osflash mailing [EMAIL 
> PROTECTED]://osflash.org/mailman/listinfo/osflash_osflash.org
>
>
> _______________________________________________
> osflash mailing list
> [email protected]
> http://osflash.org/mailman/listinfo/osflash_osflash.org
>
>

<<logo.gif>>

_______________________________________________
osflash mailing list
[email protected]
http://osflash.org/mailman/listinfo/osflash_osflash.org

Reply via email to