ダッシュコード/ダッシュボードでアニメーションを行うときのより多くの制御?
-
30-09-2019 - |
質問
最近、私はダッシュコードに別のショットを与えています;)
それは素晴らしい。よく文書化されていないと思います。 2つのビューしかないStackLayoutオブジェクトと、遷移とビューを交換するいくつかのボタンがあります(ビューは、大きな配列のデータを表示します、 list
)アニメーションとトランジションは完璧に機能します。問題は、アニメーションをアニメーション化するときにボタンを押すと再びugいものに見えます(長さ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);
}
解決
最終的にこれに対する答えを見つけました。これが私がそれをした方法です:
document.getElementById('stackLayout').object.endTransitionCallback=function(stackLayout, oldView, newView) {
//PUT CODE HERE USING stackLayout, oldView, newView to show params
}
実際、プロジェクトのstacklayout.jsファイルにすべてのstacklayoutメソッドとプロパティを見つけることができます!!
お役に立てれば
所属していません StackOverflow