2012-05-08 58 views
0

我在創建PhoneGap應用程序中的基於拖放的菜單時遇到問題。我嘗試了一些插件,例如jquery.mobiledraganddrop.js(http://www.stevefenton.co.uk/Content/Jquery-Mobile-Drag-And-Drop/)它沒有工作,並嘗試使用jQuery的「touch」事件自己編寫此功能手機(動畫雖然不流暢)。他們中的任何一件都不足以滿足我的事業。使用PhoneGap和pep.jquery.js在Android上拖放

最終我發現pep.jquery.js(http://pep.briangonzalez.org/)插件似乎是完美的,但是,一些問題發生了,我將在稍後描述。

下面介紹的代碼背後的想法是,菜單項顯示爲統一放置在圓周上的令牌。只要令牌在圓心中丟失,就會選擇菜單選項。如果在觸摸事件結束時令牌不夠接近圓心,則會移回原始位置。

的問題是:在PC上拖動的作品,但確實不工作在所有的的Android手機上,touchend事件,當我停止拖動的令牌不發生(我知道的事實marginLeft和marginTop設置爲0,並且不會導致令牌移動到原始位置 - 爲了調試目的,我將其留下)。

$(document).ready(function(){ 
    var centerX = 240; 
    var centerY = 440; 
    var radius = 180; 
    var internalRadius = 86;  
    var tokenNumber = $("#circle .token").length; 

    reloadTokens(tokenNumber, radius, 0); 

    $(".token").pep({ 
     cssEaseDuration: 0, 
     activeClass: "activeToken" 
    }); 

    $("#token").bind("touchend",function(){ 
     $(this).forceStop(); 
     $(this).animate({ 
      marginLeft: 0, 
      marginTop: 0 
     }, "fast", "easein"); 
    }); 

}); 

function reloadTokens(tokenNumber, radius, additionalOffset){ 

    var degreeOffset = 60; 

    var i = 0; 
    $(".token").each(function(){ 
     degree = (i * (360/tokenNumber) - degreeOffset + additionalOffset) % 360; 
     var tokenX = radius * Math.cos(degree * (Math.PI/180)) + radius; 
     var tokenY = radius * Math.sin(degree * (Math.PI/180)) + radius; 
     $(this).css({ 
      marginLeft: tokenX, 
      marginTop: tokenY 
     }); 
     i++; 
    }); 
} 

對此代碼的任何幫助將不勝感激。 :)我也會很高興,如果你給我另一個想法如何處理使用手機的拖放,而不是我之前描述的方法。

回答

1

iamovie,

我創建了Pep。哪個Android設備以及該設備上的哪個瀏覽器?給我多一點信息,我會幫助調試。

如果你提出問題here我們可以跟蹤這個錯誤,我會確保這個問題在SO上被交叉引用,我們可以發佈一個合法的答案來解決這個問題。