0

最近、私はダッシュコードに別のショットを与えています;)

それは素晴らしい。十分に文書化されていないと思います。ビューが 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);
}
4

1 に答える 1

2

最終的にこれに対する答えを見つけました。これが私がそれをした方法です:

document.getElementById('stackLayout').object.endTransitionCallback=function(stackLayout, oldView, newView) {
    //PUT CODE HERE USING stackLayout, oldView, newView to show params
}

実際、すべての stackLayout メソッドとプロパティは、プロジェクトの StackLayout.js ファイルにあります!!

お役に立てれば

于 2011-02-02T19:21:25.743 に答える