Làm thế nào để sử dụng cử chỉ thu phóng trong libgdx?


7

Tôi đã tìm thấy mã ví dụ cho GestureListenerlớp, nhưng tôi không hiểu phương thức thu phóng:

private float initialScale = 1;

public boolean zoom (float originalDistance, float currentDistance) {
    float ratio = originalDistance / currentDistance; //I get this
    camera.zoom = initialScale * ratio; //This doesn't make sense to me because it seems like every time you pinch to zoom, it resets to the original zoom which is 1. So basically it wouldn't 'save' the zoom right?
    System.out.println(camera.zoom); //Prints the camera zoom
    return false;
}

Tôi không giải thích điều này phải không?


1
Không nên là camera.zoom × = ratio; ?
sinh

Tôi nghĩ giao diện này và lớp GestureDetector không được suy nghĩ kỹ. Tôi đang có cùng một vấn đề, và bây giờ tôi đang cố gắng tìm ra một giải pháp tốt.
Adam Toth

Tôi nghĩ giao diện sẽ cần một zoomStart(float distance)và một zoomStop(float initialDistance, float finalDistance)phương pháp
Adam Toth

Câu trả lời:


1

Mỗi lần bạn đặt ngón tay lên màn hình, originalDistance / currentDistancekết quả sẽ có giá trị 1.

Nếu bạn sử dụng trực tiếp giá trị này, thu phóng sẽ luôn bắt đầu ở mức zoom = 1.0f.

Để giải quyết vấn đề này, bạn nên lưu trữ hệ số thu phóng hiện tại khi bắt đầu thu phóng và nhân hệ số này với tỷ lệ được tính mới. Vì vậy: trên touchDown thực hiện thu phóng hiện tại : initialScale = Camara.zoom;.


0

initialScale trông giống như một hằng số được sử dụng để mở rộng mọi thứ trong trò chơi.

zoomHàm tính toán originalDistance / currentDistancegiá trị, áp dụng nó cho Camera và in ra.

Thật khó để nói thêm mà không thấy mã bị ảnh hưởng khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.