React-Native: получить координаты X и Y перетаскиваемого объекта с помощью PanResponder.panHandlers (nativeElement)

#javascript #android #ios #reactjs #react-native

#javascript #Android #iOS #reactjs #реагировать-native

Вопрос:

Я разрабатываю приложение, которое обеспечивает дизайн различных форм, таких как квадрат и круг, я использовал следующую библиотеку

https://www.npmjs.com/package/react-native-draggable

Во время создания моего чертежного представления он работает нормально, но во время редактирования этого чертежа я хочу переместить круг и квадрат из предыдущей сохраненной позиции в новую позицию, но когда я пытаюсь установить свою предыдущую последнюю позицию из базы данных, я не могу получить идеальное положение X и Y. введите описание изображения здесь

При отладке я получаю положение касания объекта, а не положение X и Y объекта

это мой код :

  1. Я использовал класс draggable для создания объекта, который можноперетаскивать,

  2. В моем компоненте :

                       <Draggable
                           renderSize={68}
                           renderColor='rad'
                           x={80.80097961425781}
                           y={72.79156494140625}
                           renderText='B'
                           pressDrag={()=>alert('touched!!')}
                           pressDragRelease={({ nativeEvent }) => { console.log(nativeEvent);}}
                           reverse={false}
                       />
      

Вот мой вопрос:

1. Как я могу получить X и Y из nativeElement ,

свойство ‘nativeElement` : nativeEvent

 ChangedTouches - Array of all touch events that have changed since the last event
identifier - The ID of the touch
locationX - The X position of the touch, relative to the element
locationY - The Y position of the touch, relative to the element
pageX - The X position of the touch, relative to the root element
pageY - The Y position of the touch, relative to the root element
target - The node id of the element receiving the touch event
timestamp - A time identifier for the touch, useful for velocity calculation
touches - Array of all current touches on the screen
  

Комментарии:

1. Вы получили какое-либо решение?

2. @vignesh нет, я не получил никакого решения.

3. Спасибо. Не используйте react-native-draggable. Создайте свой собственный с помощью pan responder.это работает нормально

Ответ №1:

Я тоже использовал react-native-draggable в проекте. pageX , pageY — это координаты вашего фактического касания, в то время как locationX , locationY — это смещение вашего касания от верхнего левого края объекта. Вы не указали, как вы визуализируете фигуры, но, например, если вы визуализируете изображение для перетаскивания, вы можете получить точные координаты в верхнем левом углу, получив ( pageX-locationX ), ( pageY-locationY ). И вы можете извлечь их из nativeEvent следующим образом:

 <Draggable
  renderSize={68}
  renderColor='rad'
  x={80.80097961425781}
  y={72.79156494140625}
  renderText='B'
  onDragRelease={(e) => {console.log("pageX, pageY = "   e.nativeEvent.pageX   ", "   e.nativeEvent.pageY);
  console.log("locX, locY = "   e.nativeEvent.locationX   ", "   e.nativeEvent.locationY)}}>
  reverse={false}
/>
  

Кроме того, я изменил pressDragRelease на onDragRelease ; не уверен, что вы обернули onDragRelease в свою собственную отдельную функцию или у вас другая версия или что-то в этом роде, но в моем случае это onDrag / onDragRelease . Надеюсь, это поможет.

Ответ №2:

вы можете получить границы вашего перетаскиваемого объекта в следующих аргументах вашего обратного вызова.

 <Draggable
  ...
  onDragRelease={(e, gestureState, bounds) => { console.log(bounds); }}
/>