2012-01-17 1 views
0

Мне нужно сделать, если параметры необязательны. Если это имеет смысл.JavaScript, если параметр, игнорирование прозрачности в изображениях

Если вы заметили, что обе мои функции равны 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, если вы хотите увидеть этого щенка в действии.

Спасибо!

ответ

0

Единственное отличие, которое я вижу, это три дополнительных теста в getTile(). Вы можете использовать логический третий arg (например, 'tile'), который, если set будет применять эти тесты.

+0

Спасибо, но я не хочу включать или выключать их, я хочу ввести строку, которая подразумевает, что переключатель включен, а затем выбирает класс из данной строки. –