gohud

Chờ đợi, báo tin, đếm

← Widget

GoSnackbar — lời nhắn tự tìm lấy chỗ đứng

Nằm ở đáy (hoặc trên đỉnh), phía trên vùng an toàn và bàn phím, rồi tự đi mất. Không có nó thì bạn phải viết lớp, chỗ đặt, đồng hồ đếm giờ và phần dọn dẹp ở mọi màn hình cần nói "đã lưu".

snack.show_text("Đã lưu", GoTheme.SUCCESS)

# Một cơ hội để hoàn tác — 0 là nút đầu tiên, -1 nghĩa là đã hết giờ
if await snack.post({"text": "Đã bỏ vật phẩm", "actions": ["Hoàn tác"]}) == 0:
    restore_item()

Các lời nhắn xếp hàng chứ không đè lên nhau, và những dòng lặp lại giống hệt nhau thì được gộp — một server hỏng bốn lần mỗi giây không còn dồn thành bốn phút cảnh báo nữa. Một snackbar không có nút thì cho thao tác đi xuyên qua, nên game bên dưới vẫn chạy tiếp.

Nó không phải chỗ để hỏi một điều gì đó. Nó tự biến mất, nên người chơi có thể chẳng bao giờ thấy. Những xác nhận không thể hoàn tác thuộc về GoDialogs. Nút ở đây phải là tùy chọn — Hoàn tác, Chi tiết, Thử lại.

GoNotice là nửa còn lại của cặp này: nó không bao giờ nhận thao tác hay focus, và màn hình sở hữu nó mới quyết định nó nằm ở đâu. Nó không mang được một cái nút; cái này thì mang được.

GoSpinner — cuộc chờ chưa thấy điểm dừng

Game có nói chuyện với server thì cần cái này hơn mọi thứ khác trên trang này: một màn hình đứng im được đọc ra là treo. Một lệnh gọi biến chính cái nút bạn vừa bấm thành spinner ngay tại chỗ.

GoSpinner.busy(buy_button, true)
var ok := await server.purchase(item)
GoSpinner.busy(buy_button, false)

Cái nút giữ nguyên kích thước — nhãn chuyển thành trong suốt chứ không biến mất, nên hàng không bị giật — và nó bị vô hiệu hóa trong lúc quay. Vế thứ hai mới là điểm chính: một giao dịch mua không được phép bắn đi hai lần trong lúc bạn await. Khi bật reduce_motion thì nó không quay; thay vào đó ba cái chấm nhấp nháy.

Tiến độ đo được thì là GoBar. Một spinner không hứa hẹn gì về lúc nó kết thúc.

GoBadge — chấm chưa đọc, nhãn MỚI, con số 99+

GoBadge.attach(mail_button, unread_count)   # tự ẩn khi bằng không
GoBadge.attach(shop_button, 0, "MỚI")
GoBadge.attach(friend_button, 3, "", true) # một cái chấm — "có gì đó ở đây"

Nó treo vào góc trên bên phải của vật chủ bằng anchor, nên nó bám theo được cả một vật chủ mà kích thước được quyết định về sau, và gắn hai lần thì vẫn trả về đúng cái badge đó. Hãy dùng con số khi số lượng làm thay đổi việc người chơi sẽ làm, và dùng cái chấm khi chỉ "có gì đó" là đủ.

Màu chữ của nó được chọn sao cho tương phản với bất kỳ màu nào skin đã tô lên badge — không bao giờ mặc định là trắng — và nó mang theo một cái tên cho trợ năng, vì một cái chấm màu chẳng nói lên điều gì với trình đọc màn hình.