Я пытаюсь вычислить координаты увеличенного изображения на основе координат pageX и pageY, предоставленных мне PanResponder.Я подумал, что мне просто нужно добавить смещение X и Y к возвращенным мне координатам, но я, похоже, неправильно оценил то, что должно было произойти.
Кажется, что координаты экрана устройства независимо от масштаба соответствуют одному и тому же месту на увеличенном элементе.Поэтому, если я помещаю что-то в верхнем левом углу экрана устройства, оно попадает в это место на увеличенном элементе.
Я получаю свое смещение, измеряя увеличенный элемент с помощью RCTUIManager, и кажется, что он возвращает правильные значениядля смещения X и Y на основе других вычислений, которые я проверял.
Это самая последняя итерация кода, который я пытался использовать:
let {measureData} = this.state;
let offsetX = measureData.x;
let offsetY = measureData.y
let x = (e.nativeEvent.pageX) - offsetX;
let y = (e.nativeEvent.pageY) - offsetY;
Я вычитаю, потому что значения, которые я получаю, являются отрицательными, я также позволю им панорамировать этопозже, так что я надеялся, что это будет работать правильно, если они переместят его, так что значение было положительным, чтобы вычесть его.
measureData
содержит значения из RCTUIManager, который обновляется каждый раз, когда происходит событие масштабирования.
Как обновить measureData
setMeasureData = () => {
RCTUIManager.measure(ReactNative.findNodeHandle(this.refs['wrap']), (x, y, width, height, pageX, pageY) => {
this.setState({
measureData: {x, y, width, height, pageX, pageY}
})
});
}
Вызывается в функции обратного вызова после изменения масштаба.
Добавлены элементы, которые я пытаюсь добавитьиспользуя другой компонент, в который я подаю значения XY, этот компонент использует Animated.ValueXY()
с вычисленными координатами, чтобы поместить изображение в правильное начальное положение, чтобы они могли перетаскивать его после.
Текущий расчет делает всепоместите вниз и справа от сенсорного события.Я не уверен, где моя логика или расчеты не так с этим.Я надеюсь, что кто-то может понять, где мои вычисления или мыслительный процесс неверны.