2012-01-17 36 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三个额外的测试()。你可以使用布尔第三个参数(例如'tile'),如果设置了这个参数就会应用那些测试。

+0

谢谢,但我不想打开或关闭切换他们,我想进入暗示的切换是一个字符串,然后从给定的字符串选课。 – 2012-01-17 10:24:27