0

パラメータをオプションにする必要があります。それが理にかなっている場合。

両方の関数が98%同じであることに気付いた場合は、この違いをパラメーターに変換する必要があります。クリックするだけではありません。

getElement(x, y, class)

ここで、新しいパラメータクラスは、コードで//ここにマークしたものを変更します

//get the element under the mouse, ignoring all transparency.
function getElement(x, y){
  var elem = document.elementFromPoint(x, y);
  if($(elem).parents("#game").length != 1){ return -1; }
  var pixelAlpha = mousePixelOpacity(elem, x, y);
  var track = Array;
  for(var i = 0;i<50;i++){
    if($(elem).attr("id") == "game"){ return -1;}
    if(pixelAlpha == 0){ /////////////////////////////////////////HERE
      track[i] = elem;
      for(var z = 0; z<i+1; z++){ //hide elements
        $(track[z]).hide();
      }
      elem = document.elementFromPoint(x, y); //set the element right under the mouse.
      pixelAlpha = mousePixelOpacity(elem, x, y);
      for(var z = 0; z<i+1; z++){ //show all the recently hidden elements
        $(track[z]).show();
      }
    }
    if(pixelAlpha != 0){ ///////////////////////////////////////// AND HERE
      return elem;
    }
  }
  return -1;
}

//get the tile under the mouse, even if it's behind an object
function getTile(x, y){
  var elem = document.elementFromPoint(x, y);
  if($(elem).parents("#game").length != 1 && $(elem).attr("id") != "tileHighlight"){ return -1; }
  var pixelAlpha = mousePixelOpacity(elem, x, y);
  var track = Array;
  for(var i = 0;i<50;i++){
    if($(elem).attr("id") == "game"){ return -1;}
    if(pixelAlpha == 0 || $(elem).attr('class') != "tile"){ /////////HERE
      track[i] = elem;
      for(var z = 0; z<i+1; z++){ //hide elements
        $(track[z]).hide();
      }
      elem = document.elementFromPoint(x, y); //set the element right under the mouse.
      pixelAlpha = mousePixelOpacity(elem, x, y);
      for(var z = 0; z<i+1; z++){ //show all the recently hidden elements
        $(track[z]).show();
      }
    }
    if($(elem).attr('class') == "tile" && pixelAlpha != 0){ ///// AND HERE
      return elem;
    }
  }
  return -1;
}

私は次のようなことを考えていました

getElement(x, y, "title");

//(This can be right) OR (both of these can be right.)

if( (pixelAlpha == 0) || (class="tile"  &&  onlycountclassifIsaidsovar) ){}

ちなみに、この子犬の行動を見たいのなら、私はhttp://untitled.servegame.comにいます。

ありがとう!

4

1 に答える 1

0

私が見る唯一の違いは、getTile()の3つの追加テストです。ブール値の3番目の引数(たとえば、「タイル」)を使用できます。これを設定すると、これらのテストが適用されます。

于 2012-01-17T10:21:26.970 に答える