4

四角で分割された画面があり、パンジェスチャで指で連続してタッチして色を変更する必要があります。

ここに画像の説明を入力

最初は、パンハンドラーで指の位置を取得し、その場所にある要素を見つけて、色を変更できると思っていました。でも思ったようにはいきませんでした。私はこの問題で立ち往生しており、あなたの意見について疑問に思っています.

4

1 に答える 1

5

これらの正方形の親 View にPanResponderを提供します。

// define the constants
const rows = 10;
const columns = 5;
const {width, height} = Dimensions.get('window');

onPanResponderMove内にこのロジックを記述します。

 onPanResponderMove: (evt, gestureState) => {
    let i = 0;
    let x = evt.nativeEvent.pageX;
    let y = evt.nativeEvent.pageY;
    let percentageX = Math.floor(x / (width / columns));
    let percentageY = Math.floor(y / (height / rows));
    i = percentageX + columns * percentageY;
    this.onChangeItem(i);  // <-- i will provide you the index of current touch 
  },

onChangeItem 関数内で、指の移動中にインデックスが変更されていることを確認します。

onChangeItem = (index) => {
  if (this.index !== index) {
    // do operations here with index.
  }
};

....

ここに私のコード例があります: PanhandlerAnimations

結果:

ここに画像の説明を入力

于 2020-05-20T10:55:46.393 に答える