最近、私はダッシュコードに別のショットを与えています;)
それは素晴らしい。十分に文書化されていないと思います。ビューが 2 つしかない stackLayout オブジェクトと、トランジションでビューを交換するボタンがいくつかあります (ビューは大きな配列のデータを表示しますlist
)。アニメーションとトランジションは完璧に機能します。問題は、アニメーションのアニメーション中にボタンを押すと、アニメーションが再び開始され、見苦しく見えることです (長さ n のデータソース配列に対して n 個のビューがある場合、これは問題にはなりませんが、これは私の場合ではありません)。
アニメーション中はボタンを無効にしたい。
コールバック、デリゲート、またはアニメーションが終了したときに通知を受け取る方法はありますか?
これは私がやったことです:
function _changeView(transitionDirection, newIndex){
//Create transition
var newTransition = new Transition(Transition.SWAP_TYPE, 0.9, Transition.EASE_TIMING);
newTransition.direction = transitionDirection;
//I only have two views. I use currentView's id to calculate not current view id and change text inside of it.
var stackLayout = document.getElementById('stackLayout').object;//stackLayout object
var nextViewId = (stackLayout.getCurrentView().id == 'view1')? '2':'1'; //
//change the text in the view that is going to appear
document.getElementById('text'+nextViewId).innerHTML = list[curIndex];
stackLayout.setCurrentViewWithTransition('view'+ nextViewId, newTransition, false);
}
function goPrevious(event)
{
curIndex--;
if(curIndex < 0){
curIndex = list.length-1;
}
_changeView(Transition.LEFT_TO_RIGHT_DIRECTION, curIndex);
}
function goNext(event)
{
curIndex++;
if(curIndex >list.length - 1){
curIndex = 0;
}
_changeView(Transition.RIGHT_TO_LEFT_DIRECTION, curIndex);
}