Щетка и масштаб реагируют нативную лыж и реагируют обработчик жестовJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Щетка и масштаб реагируют нативную лыж и реагируют обработчик жестов

Сообщение Anonymous »

Я использую Native Skias Library React, и я пытаюсь выполнить вычисления матрицы для создания паннабельного и увеличиваемого холста Skia (например, Figma или Google Maps). Вот моя реализация до сих пор < /p>


function MyCanvas({
imageView,
canvasWidth,
canvasHeight,
}: {
imageView: Element[];
canvasWidth: number;
canvasHeight: number;
}) {
const translateX = useSharedValue(0);
const translateY = useSharedValue(0);
const scale = useSharedValue(1);
const savedScale = useSharedValue(1);
const focalX = useSharedValue(0);
const focalY = useSharedValue(0);

const matrix = useSharedValue(Matrix4());

const context = useSharedValue({ x: 0, y: 0 });

const panGesture = Gesture.Pan()
.onStart(() => {
context.value = { x: translateX.value, y: translateY.value };
})
.onUpdate((event) => {
translateX.value = event.translationX + context.value.x;
translateY.value = event.translationY + context.value.y;
});

const pinchGesture = Gesture.Pinch()
.onUpdate((event) => {
scale.value = event.scale * savedScale.value;
focalX.value = event.focalX;
focalY.value = event.focalY;
})
.onEnd(() => {
savedScale.value = scale.value;
console.log(matrix.value);
});

const computedMatrix = useDerivedValue(() => {
return processTransform3d([
// 1. Apply current global panning
{ translateX: translateX.value },
{ translateY: translateY.value },

// 2. Translate to pivot point (focal point for zoom)
{ translateX: focalX.value },
{ translateY: focalY.value },

// 3. Apply scaling
{ scale: scale.value },

// 4. Translate back from pivot point
{ translateX: -focalX.value },
{ translateY: -focalY.value },
]);
}, [scale, translateX, translateY, focalX, focalY]);

useDerivedValue(() => {
// console.log(computedMatrix.value);
// This effect updates the Skia Matrix4 instance directly.
matrix.value = computedMatrix.value;
});

const composedGesture = Gesture.Simultaneous(panGesture, pinchGesture);

return (



{imageView}



);
}< /code>
< /div>
< /div>
< /p>
Эти кастрюли (переводится), но всякий раз, когда я пытаюсь укол, чтобы продолжать увеличивать начало происхождения (0,0), а не фокусную точку жеста. Есть предложения?


Подробнее здесь: https://stackoverflow.com/questions/796 ... re-handler
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Отреагировать нативную лыж, чтобы увеличить жест
    Anonymous » » в форуме Javascript
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Выбранная ошибка выявления PHP выбранная щетка
    Anonymous » » в форуме Php
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Выбранная ошибка выявления PHP выбранная щетка
    Anonymous » » в форуме Php
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Глобальный обработчик исключений отменяет обработчик транзакций базы данных
    Anonymous » » в форуме JAVA
    0 Ответы
    91 Просмотры
    Последнее сообщение Anonymous
  • Обработчик исключений Spring @Controller и глобальный обработчик исключений. Как вызвать оба
    Anonymous » » в форуме JAVA
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Javascript»