2012-11-02 21 views
8

Tôi đang sử dụng scene2d trong thư viện libgdx để tạo một số giao diện người dùng trong trò chơi của mình.Tại sao Bảng Libgdx không chấp nhận hành động tỷ lệ?

Tôi đã sử dụng Bảng và tôi muốn thực hiện một số hành động mở rộng khi người dùng chạm vào để tạo cảm giác nút.

Khi tôi sử dụng bất kỳ loại "Actor" nào khác như Group và cho nó một hành động tỷ lệ, nó hoạt động chứ không phải Bảng.

đây là định nghĩa Bảng của tôi:

Table table = new Table(); 
table.setSize(width, height); 
table.setPosition(x, y); 
table.setOrigin(width/2, height/2); 
table.add(new Label(...)); 
table.row(); 
... 

Và trong trường hợp Touchdown của tôi, tôi cho nó một hành động quy mô:

table.addAction(Actions.scaleTo(0.8f, 0.8f, 0.1f)); 

Và trong Touchup tôi cho nó hành động khác để có được quy mô ban đầu:

table.addAction(Actions.scaleTo(1f, 1f, 0.1f)); 

Như tôi đã nói mã này hoạt động cho một loại diễn viên khác như Hình ảnh và Nhóm. Bất kỳ ý tưởng nào tại sao không hoạt động đối với Bảng?

Trả lời

15

trả lời cho câu hỏi của riêng tôi:

Để tài liệu của libGdx (https://code.google.com/p/libgdx/wiki/scene2dui#Rotation_and_scale) bảng không hỗ trợ mở rộng quy mô và xoay nếu đó là nền đã được thiết lập.

Nếu chúng ta muốn mở rộng quy mô và/hoặc xoay bảng chúng ta phải cư xử như mã bên dưới:

TextButton button = new TextButton("Text Button", skin); 
Table wrapper = new Table(); 
wrapper.add(button); 
wrapper.setTransform(true); 
wrapper.setOrigin(wrapper.getPrefWidth()/2, wrapper.getPrefHeight()/2); 
wrapper.setRotation(45); 
wrapper.setScaleX(1.5f); 
+2

Trong phiên bản mới nhất của thư viện (0.9.8) 'setTransform' dường như bị mất tích, nhưng thay vào đó bạn có thể gọi 'setClip (true)' cho phép chuyển đổi như là một tác dụng phụ. – Nick

+1

@Nick - setTransform vẫn ở dưới 0.9.8. Đó là một phương thức của 'Nhóm' http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/Group.html#setTransform%28boolean%29 – Pool

+0

Làm việc cho tôi, thanx! –

Các vấn đề liên quan