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

  1. a true if cursor fall within rectangle x

  2. a false if cursor falls within rectangle 1, 2, 3 or 4

  3. 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

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -