Một khi tôi đã gọi DragManager.acceptDrag
là có cách nào để "không chấp nhận" kéo? Giả sử tôi có chế độ xem có thể chấp nhận kéo và thả, nhưng chỉ ở một số khu vực nhất định. Khi người dùng kéo qua một trong các khu vực này, tôi gọi DragManager.acceptDrag(this)
(từ trình xử lý DragEvent.DRAG_OVER
), nhưng nếu người dùng di chuyển ra khỏi khu vực này, tôi muốn thay đổi trạng thái của thao tác kéo thành không được chấp nhận và hiển thị phản hồi DragManager.NONE
. Tuy nhiên, không gọi DragManager.acceptDrag(null)
cũng không phải DragManager.showFeedback(DragManager.NONE)
dường như có bất kỳ ảnh hưởng nào. Một khi tôi đã chấp nhận kéo một tập các loại phản hồi tôi dường như không thể thay đổi nó.Làm cách nào để "không chấp nhận" một lần kéo trong Flex?
Chỉ cần làm rõ: các khu vực mà người dùng có thể thả không phải là thành phần hoặc thậm chí hiển thị đối tượng, trên thực tế chúng chỉ nằm trong văn bản của trường văn bản (như vùng chọn). Nếu chúng là các thành phần của riêng chúng, tôi có thể giải quyết nó bằng cách làm cho mỗi thành phần của chúng chấp nhận các sự kiện kéo riêng lẻ. Tôi đoán tôi có thể tạo các thành phần proxy trôi nổi trên văn bản để mô phỏng nó, nhưng tôi không muốn nếu nó không cần thiết.
Tôi đã quản lý để làm việc trong cả AIR và trình duyệt ngay bây giờ, nhưng chỉ bằng cách đặt các thành phần proxy trên đầu phạm vi văn bản nơi bạn có thể thả mọi thứ. Bằng cách đó, tôi nhận được phản hồi và giọt thích hợp sẽ tự động không được chấp nhận khi kéo lối ra.
Đây là điều lạ lùng nhất về D & D trong AIR:
DragManager.doDrag(initiator, source, event, dragImage, offsetX, offsetY);
Trong Flex dựa trên trình duyệt, offsetX
và offsetY
nên tiêu cực (để nói rằng tài liệu, và nó hoạt động tốt). Tuy nhiên, khi chạy chính xác cùng mã trong AIR, bạn phải thực hiện bù trừ tích cực. Những con số tương tự, nhưng tích cực. Điều đó rất, rất kỳ lạ.
Tôi đã thử nghiệm một số chi tiết và những gì @maclema hoạt động, nhưng không phải nếu bạn chạy trong AIR. Dường như việc kéo và thả AIR là khác nhau. Nó thực sự, thực sự kỳ lạ vì không chỉ là thông tin phản hồi không hiển thị chính xác, và nó không thể không chấp nhận, nhưng các tọa độ cũng hoàn toàn tắt. Tôi vừa thử ứng dụng của mình trong trình duyệt thay vì AIR và kéo và thả hoàn toàn bị hỏng.
Ngoài ra, bỏ qua trình xử lý dragEnter
hoạt động tốt trong AIR, nhưng phá vỡ mọi thứ khi chạy trong trình duyệt.
Chấp nhận kéo trong trình xử lý 'DRAG_ENTER' làm mọi thứ trở nên tồi tệ hơn. Tôi vẫn không thể từ chối việc kéo (gọi 'DragManager.acceptDragDrop (null)' không có hiệu lực, ít nhất là không có hiệu ứng có thể nhìn thấy), và chấp nhận kéo trên nhập loại bỏ điều khiển nhỏ mà tôi có. Bây giờ dấu + bên dưới con trỏ được hiển thị ngay khi chuột vào thành phần, thay vì bắt đầu hiển thị khi người dùng kéo qua các vùng đặc biệt. – Theo
tốt, điều đó cũng sẽ làm cho người khởi tạo trở thành một mục tiêu, hiển thị dấu + khi người dùng kéo qua thành phần đó (mà nó chắc chắn không nên vì nó không chấp nhận các giọt). Vì vậy, điều đó không hoạt động. – Theo