Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Swiftu. Zároveň využij výhodnou slevovou akci až 30 % zdarma při nákupu e-learningu - více informací.
swift week + discount 30

Diskuze: Dvojrozměrné pole user defined objektů

Aktivity
Avatar
Jaroslav Zakouřil:2.2.2021 17:46

Potřebuji vytvořit dvojrozměrné pole vlastních objektů, pomocí kterých budu do canvasu vykreslovat obdélníky.

Zkusil jsem: Takto jsem vytvořil vlastní objekt s názvem Plot. Každý objekt tohoto typu obsahuje souřadnice protilehlých bodů obdélníka a kód jeho barvy.

function Plot(xTL, yTL, xBR, yBR, color) {//Top-Left,Bottom-Right
        this.xTL = xTL;
        this.yTL = yTL;
        this.xBR = xBR;
        this.yBR = yBR;
        this.color = color;
        this.getXTL = function() {return this.xTL;}
        this.setXTL = function(xtl) {this.xTL = xtl;}
        this.getYTL = function() {return this.yTL;}
        this.setYTL = function(ytl) {this.yTL = ytl;}
        this.getXBR = function() {return this.xBR};
        this.setXBR = function(xbr) {this.xBR = xbr};
        this.getYBR = function() {return this.yBR};
        this.setYBR = function(ybr) {this.yBR = ybr};
        this.getCol = function() {return this.color};
        this.setCol = function(col) {this.color = col};
}

Pak jsem vytvořil jednorozměrné pole proměnných typu Plot, které jsem v cyklu naplnil hodnotami.

var plot_ver = new Array(10);//jednorozměrné pole o 10 prvcích

for (i = 0; i < plot_ver.length; i++) {//
        plot_ver[i] = new Plot((i*10)+1,(i*10)+2,(i*10)+3,(i*10)+4,(i*10)+250)
}

Až sem to funguje, takto můžu pro kontrolu do canvasu vypsat hodnoty:

for (i = 0; i < plot_ver.length; i++) {
                ctx.fillText(plot_ver[i].getXTL()+" "+plot_ver[i].getYTL()+" "+plot_ver[i].getXBR()+" "+plot_ver[i].getYBR()+" "+plot_ver[i].getCol(),1210,70+i*30);
        }

Chci docílit: Potřebuji ale pole dvojrozměrné, takže jsem se pokusil analogicky vytvořit dvojrozměrné pole takto:

var plot_ver = new Array(10);
for (i = 0; i < plot_ver.length; i++) {//
        plot_ver[i] = new Array(18);
        for (j = 0; j < plot_ver[i].length; j++) {
                plot_ver[i][j] = new Plot(104+i*100, 44+j*100, 112+i*100, 132+j*100, 10*i +j);
        }                                       }

Tohle ale nefunguje. Poraďte mi někdo, prosím, jak to vyřešit.
Díky předem!

 
Odpovědět
2.2.2021 17:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.