动画iPhone和Android中的视图更改

时间:2014-02-12 09:32:20

标签: javascript titanium titanium-mobile

我试图在Titanium项目中制作一个“UINavigationController类型动画​​”,但是目前当我做动画时,它会做一个“回弹”动画,其中视图“出来”另一个“去了” ”。我已经设法弄清楚决定动画结束位置的值是什么,即动画的left属性,但是如何设置动画的开始位置?

控制动画的代码:

function hideOldWindow() {

    window.animate(animateOut, function(){});

}

function showNewWindow() {
    var old = views[currentView];
    window.remove(old);
    currentView = (currentView + 1) % views.length;
    var win = views[currentView];
    viewControllers[currentView].onBecomeVisible();
    window.add(win);
    window.animate(animateIn, function(){});    

}

var animateIn = Titanium.UI.createAnimation();
    animateIn.left = 0;
    animateIn.duration = 250;
    animateIn.curve = Ti.UI.ANIMATION_CURVE_EASE_OUT;

var animateOut = Titanium.UI.createAnimation();
    animateOut.left = -screenWidth + 1;
    animateOut.duration = 250;
    animateOut.curve = Ti.UI.ANIMATION_CURVE_EASE_OUT;

1 个答案:

答案 0 :(得分:0)

我不知道UINavigationController类型动画​​是怎样的,但是为了控制动画的开始位置,你必须设置视图的左边属性(这适用​​于我没有在windows上试过的视图)。

例如,要为要显示的视图设置动画,从屏幕左侧到中心,您可以将showNewWindow方法更改为:

function showNewWindow() {
    var old = views[currentView];
    window.remove(old);
    currentView = (currentView + 1) % views.length;
    var win = views[currentView];
    viewControllers[currentView].onBecomeVisible();
    window.add(win);

    // NEW LINE
    window.left = -screenWidth + 1;

    window.animate(animateIn, function(){});    

}

现在,窗口将出现在-screenWidth + 1到left = 0。

也许您必须在为窗口设置动画之前添加超时才能使其正常工作。

希望有所帮助