2011-07-12 143 views
1

我想將當前打開的窗口滑動到左側,並將新窗口從右側滑動到屏幕上。我使用下面的代碼,它不工作:鈦:左/右滑動窗口

var newWindow = Titanium.UI.createWindow({ 
     url:'new.js', 
     backgroundImage:'ui/bg.gif', 
     zIndex: 10, 
     left: "100%", 
     width: "100%" 
    }); 


    var slide_it_left = Titanium.UI.createAnimation(); 
    slide_it_left.left = 0; // to put it back to the left side of the window 
    //slide_it_left.curve = Titanium.UI.ANIMATION_CURVE_LINEAR; 
    slide_it_left.duration = 500; 

    var slide_it_right = Titanium.UI.createAnimation(); 
    slide_it_right.left = "-100%"; 
    //slide_it_right.curve = Titanium.UI.ANIMATION_CURVE_LINEAR; 
    slide_it_right.duration = 500;  

    currentWindow.animate(slide_it_right); 
    newWindow.open(slide_it_left); 

然而,似乎有兩個窗口之間20像素的空間,當他們在/滑出。我不知道這是怎麼可能的,因爲currentWindow的寬度爲100%,也是新的。我嘗試通過調整曲線/緩動來隱藏黑色空間,但沒有好的結果,你仍然可以注意到他們之間的黑色空間無論如何。有任何想法嗎?謝謝!

UPDATE: 通過使動畫持續時間超慢,我注意到,在開始和結束時,他們完全對齊,但在它們之間沒有。通過使動畫非常快速,兩個窗口之間的空間很大。這意味着緩動必須有一些事情發生。這應該會使動畫不放鬆,否則:「Titanium.UI.ANIMATION_CURVE_LINEAR」。但不知何故,它不能解決問題..不知道寬鬆來自何處。

+0

文檔您應該嘗試使用NavigationGroup ,這是從左到右滑動的目的 – davitz38

+0

我認爲這可能是Android的情況。 CUZ android在動畫完成時調整其內部元素的大小。可能是我理解你的問題錯了,但如果我是正確的,那麼解決方法是嘗試更新內部視圖寬度以及動畫。希望這可以幫助。 –

回答

1

如果使用像素值設置窗口寬度和左/右,它會工作嗎?

+0

不,不是真的。我嘗試了不同的東西,沒有一個真的起作用,所以最後我通過使用navgroup做「真正的」滑動的東西來解決它。 – dandoen

2

如果您使用選項卡,只需在同一選項卡中打開新窗口即​​可。

tab1.open(win,{animated:true}); 
0

不,它不會工作。無論如何,我在我的一個應用程序中有相同的要求,所以不是使用窗口,而是使用Views,並從右向左進行動畫並使用App全局堆棧管理它們。希望這可以幫助。

+0

您可以改爲使用ScrollableView。默認情況下它會有滑動效果。請參閱此鏈接。 http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.ScrollableView – upendra