0

欲垂直拖動在鈦Appcelerator的一個視圖,並停止時在屏幕上顯示整個圖的高度。 在啓動視圖具有140的高度和-120底部所以我有可以一塊認爲我可以開始拖動:垂直拖動(touchMove)鈦Appcelerator的視圖

Here is the screenshot

這是我想垂直拖動「 MyView的」,x軸是留給0所以只能從底部拖動到頂部,目的是停止拖動時顯示所有MyView的高度(所有MyView的是可見的) 。

var WIDTH = (OS_ANDROID) ? Ti.Platform.displayCaps.platformWidth/dpi : Ti.Platform.displayCaps.platformWidth; 
var HEIGHT = (OS_ANDROID) ? Ti.Platform.displayCaps.platformHeight/dpi : Ti.Platform.displayCaps.platformHeight; 
var sx = 0; 
var sy = 0; 
var cx = 0; 
var cy = 0; 
var xDistance = 0; 
function onTouchStart(e) { 
    // start movement 
    sx = e.x; 
    sy = e.y; 
    cx = e.x; 
    cy = e.y; 
    console.log(e.x); 
} 

function onTouchMove(e) { 
    xDistance = cx - sx; 
    var yDistance = cy - sy; 

    var points = e.source.convertPointToView({ 
     x: e.x, 
     y: e.y 
    }, $.single); 


$.myView.applyProperties({ 
     left: 0, 
     top: points.y, 
     opacity: 1 
    }); 

/*------------------------------------------------------ 
* HERE I TRY TO DETECT IF myView HEIGHT IS SHOWN ENTIRELY 
* is myView.top + myView.height > viewport ? 
------------------------------------------------------*/ 
var t = $.myView.top + $.myView.height; 
if(t >= HEIGHT){ 
    alert('all myView is visible now ???'); 
    return; // <= why this has no effect ?? 
} 

cx = e.x; 
cy = e.y; 

} 
function onTouchEnd(e) { 
    // check xDistance 
} 

$.myView.addEventListener("touchmove", onTouchMove); 
$.myView.addEventListener("touchstart", onTouchStart); 
$.myView.addEventListener("touchend", onTouchEnd); 

有了這段代碼,我可以垂直拖動myView,但當這個高度完全顯示時,它不會停止。

我的第一個問題是: - 怎麼說呢,如果完全顯示MyView的? - 如何禁用垂直如果所有MyView的高度顯示拖動到頂部?

謝謝

回答

0

函數onTouchMove應該是這樣的。

function onTouchMove(e) { 

    /*------------------------------------------------------ 
    * HERE I TRY TO DETECT IF myView HEIGHT IS SHOWN ENTIRELY 
    * is myView.top + myView.height > viewport ? 
    ------------------------------------------------------*/ 
    var t = $.myView.top + $.myView.height; 
    if(t >= HEIGHT){ 
     alert('all myView is visible now ???'); 
     return; // <= why this has no effect ?? 
    } 

    xDistance = cx - sx; 
    var yDistance = cy - sy; 

    var points = e.source.convertPointToView({ 
     x: e.x, 
     y: e.y 
    }, $.single); 


    $.myView.applyProperties({ 
     left: 0, 
     top: points.y, 
     opacity: 1 
    }); 

    cx = e.x; 
    cy = e.y; 

} 
+0

非常感謝你,我會試試這個 – user44321

+0

你好,嘗試你的代碼,當視圖完全可見時拖動不會停止。 – user44321

+0

如果條件不起作用,我的意思是「返回」 – user44321