user interface - Javascript boolean "toggle" -
i have function looks @ cursor (x, y) see if falls within 1 of several rectangles (a<x<b, c<y<d). however, need set boolean based on whether cursor ever fell particular rectangle , reset when cursor falls other rectangles. in other words
a true if cursor fall within rectangle x
a false if cursor falls within rectangle 1, 2, 3 or 4
a retains former value if it's anywhere y or z
the trouble no matter boolean returns false if leave first rectangle, whether visit other 2 rectangles or not. tried making boolean global no help.
code;
var r var s var l var incenter = false function makerects(a,b) { r = a-b s = (a/2) - (b/2) l = (a/2) + (b/2) lside = new array(4) lside[0] = 0 lside[1] = 0 lside[2] = lside[3] = b tside = new array(4) tside[0] = 0 tside[1] = 0 tside[2] = b tside[3] = rside = new array(4) rside[0] = r rside[1] = 0 rside[2] = b rside[3] = b bside = new array(4) bside[0] = 0 bside[1] = r bside[2] = b bside[3] = b asquare = new array(4) asquare[0] = 0 asquare[1] = 0 asquare[2] = s asquare[3] = s bsquare = new array(4) bsquare[0] = l bsquare[1] = 0 bsquare[2] = b bsquare[3] = s csquare = new array(4) csquare[0] = 0 csquare[1] = l csquare[2] = s csquare[3] = r dsquare = new array(4) dsquare[0] = l dsquare[1] = l dsquare[2] = r dsquare[3] = r lcenter = new array(4) lcenter[0] = 0 lcenter[1] = s lcenter[2] = b lcenter[3] = l tcenter = new array(4) tcenter[0] = s tcenter[1] = 0 tcenter[2] = l tcenter[3] = b rcenter = new array(4) rcenter[0] = r rcenter[1] = s rcenter[2] = rcenter[3] = l bcenter = new array(4) bcenter[0] = s bcenter[1] = r bcenter[2] = l bcenter[3] = mcenter = new array(4) mcenter[0] = s mcenter[1] = s mcenter[2] = l mcenter[3] = l } function cursor(a,b) { var inasquare = false var inbsquare = false var incsquare = false var indsquare = false var incenter = false if ((a>asquare[0] && a<asquare[2])&&(b>asquare[1] && b<asquare[3])) { inasquare = true post("asquare"); post(); } if ((a>bsquare[0] && a<bsquare[2])&&(b>bsquare[1] && b<bsquare[3])) { inbsquare = true post("bsquare"); post(); } if ((a>csquare[0] && a<csquare[2])&&(b>csquare[1] && b<csquare[3])) { inbsquare = true post("csquare"); post(); } if ((a>dsquare[0] && a<dsquare[2])&&(b>dsquare[1] && b<dsquare[3])) { indsquare = true post("dsquare"); post(); } if (inasquare||inbsquare||incsquare||indsquare) { incenter = false } if ((a>mcenter[0] && a<mcenter[2])&&(b>mcenter[1] && b<mcenter[3])) { incenter = true inasquare = false inbsquare = false incsquare = false indsquare = false } if (((incenter && a>s) && a<l) && b<lcenter[3]) { outlet (1, 1) } else if (((incenter && a>s) && a<l) && b>rcenter[0]) { outlet (1, 2) } else if (((incenter && b>s) && b<l) && a<tcenter[3]) { outlet (1, 3) } else if (((incenter && b>s) && b<l) && b>bcenter[1]) { outlet (1, 4) } else { outlet (1, 0) } post("incenter"); post(incenter); post(); post("inasquare"); post(inasquare); post(); post("inbsquare"); post(inbsquare); post(); post("incsquare"); post(incsquare); post(); post("indsquare"); post(indsquare); post(); }
well sorry isn't real answer, i've edited code use loops , arrays/maps. way may able more help. hope you'll able learn :)
so code this:
var r var s var l function makerects(a,b) { r = a-b s = (a/2) - (b/2) l = (a/2) + (b/2) // place arrays inside maps, can loop through them later. side = { l: [0, 0, a, b], t: [0, 0, b, a], r: [r, 0, b, b], b: [0, r, b, b], } square = { a: [0, 0, s, s], b: [l, 0, b, s], c: [0, l, s, r], d: [l, l, r, r] } center = { l: [0, s, b, l], t: [s, 0, l, b], r: [r, s, a, l], b: [s, r, l, a], m: [s, s, l, l] } } function cursor(a,b) { var inside = { a: false, b: false, c: false, d: false, center: true } // loop run through every key of map, , x hold key (var x in square) { if ((a>square[a][x] && a<square[x][2])&&(b>square[x][1] && b<square[x][3])) { inside[x] = true; // instead of checking if cursor inside center, assume // default, , if found inside square, inside['center'] set false inside['center'] = false; post(x + "square"); post(); } } // not sure want here... if (((inside['center'] && a>s) && a<l) && b<center['l'][3]) { outlet (1, 1) } else if (((inside['center'] && a>s) && a<l) && b>center['r'][0]) { outlet (1, 2) } else if (((inside['center'] && b>s) && b<l) && a<center['t'][3]) { outlet (1, 3) } else if (((inside['center'] && b>s) && b<l) && b>center['b'][1]) { outlet (1, 4) } else { outlet (1, 0) } }
Comments
Post a Comment