1
這個奇怪的bug一直困擾着我連續兩天!Titanium中的不可預知的z-index
我有5個視圖,每個視圖都包含一個滾動視圖,並在它們被點擊時在它們上設置z-index。出於某種奇怪的原因,z-index爲3的那個總是顯示在z-index爲4的頂部,除非它是第二個被點擊的元素。究竟是怎麼回事?!
請檢查下面的代碼。我正在使用Alloy。顯然不是生產代碼,但我意識到它可能不是我的代碼,所以我使用下面的代碼對它進行了測試。十分感謝你的幫助!
的合金標記:
<!-- index.xml -->
<Alloy>
<Window id="container">
<View id="v0" class="test" top="0">
<ScrollView borderColor="green">
<Label/>
</ScrollView>
</View>
<View id="v1" class="test" top="40">
<ScrollView borderColor="blue">
<Label/>
</ScrollView>
</View>
<View id="v2" class="test" top="80">
<ScrollView borderColor="red">
<Label/>
</ScrollView>
</View>
<View id="v3" class="test" top="120">
<ScrollView borderColor="purple">
<Label/>
</ScrollView>
</View>
<View id="v4" class="test" top="160">
<ScrollView borderColor="teal">
<Label/>
</ScrollView>
</View>
</Window>
</Alloy>
這裏的主腳本:
// index.js
zs = [];
changeOrder = function(){
for(var i=0; i<5; i++){
z = zs[i];
v = $["v#{i}"];
// Set the supposedly correct order of view stack
v.setZIndex(z);
// Display the order for debugging
v.children[0].children[0].setText(z);
};
$.v0.addEventListener("click", function(){
zs = [5,4,3,0,1];
changeOrder();
});
$.v1.addEventListener("click", function(){
zs = [1,5,4,3,0];
changeOrder();
});
$.v2.addEventListener("click", function(){
zs = [0,1,5,4,3];
changeOrder();
});
$.v3.addEventListener("click", function(){
zs = [3,0,1,5,4];
changeOrder();
});
$.v4.addEventListener("click", function(){
zs = [4,3,0,1,5];
changeOrder();
});
$.container.open()
鈦移動3.0.22合金1.0.0 iPhone模擬器6.1 OSX 10.8
對不起,我的壞!我使用CoffeeScript進行編程,並手動將代碼轉換爲JavaScript的文本。它應該具有與所描述的相同的效果,因爲運行時引用似乎是有效的。 – 2013-03-20 19:58:07
沒有問題,我已經確認它確實與上述修復一起工作。 – Macgyver 2013-03-20 20:06:15
感謝您試用代碼!當你說它確實有效時,你的意思是z-索引按預期工作,或者問題確實存在?鑑於我的自我,我很想知道這是我的錯還是Appcelerator的。 ; P – 2013-03-21 00:10:17