1

この奇妙なバグは、2 日間連続して私を悩ませています!

それぞれスクロール ビューを含む 5 つのビューがあり、クリックされたときに z-index を設定します。奇妙な理由で、最後から 2 番目の要素がクリックされた場合を除き、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()

Ti モバイル 3.0.22 Alloy 1.0.0 iOS シミュレーター 6.1 OSX 10.8

4

1 に答える 1

0

PHP と JavaScript を混在させているように見えるため、view 要素への参照に誤りがあります。また、ビューの設定方法に問題があるため、一番上のビューをクリックすると他のビューはクリックできなくなりますが、これはあなたがやろうとしていることです。これ:

v = $["v#{i}"];

次のようにする必要があります。

v = $["v"+i];

于 2013-03-20T19:43:46.907 に答える