2011-07-29 17 views
5

khi truy tìm các tọa độ mouseX/mouseY hoặc localX/localY của đối tượng hiển thị, tại sao x bắt đầu tại 1 trong khi y bắt đầu bằng 0? Ví dụ:ActionScript - Tọa độ chuột không chính xác?

ví dụ, tôi đã vẽ một hình ảnh 400 x 400 pixel đơn giản lên sân khấu với trình nghe sự kiện MouseEvent.MOUSE_MOVE gọi một hàm xử lý để theo dõi tọa độ cục bộ của chuột.

pixel đầu tiên, trên cùng bên trái trả về {x:1, y:0} và điểm ảnh cuối cùng, dưới cùng bên phải trả lại {x:400, y:399}. không nên bắt đầu và kết thúc bằng xy với cùng giá trị? Tôi không chắc chắn mà làm cho ý nghĩa hơn cho một tọa độ chuột đầu tiên (hoặc 0 hoặc 1) nhưng nó chắc chắn không có ý nghĩa rằng họ là khác nhau?

[SWF(width = "1000", height = "600", backgroundColor = "0xCCCCCC")] 

import flash.display.Sprite; 
import flash.events.MouseEvent; 

var darkBlueRect:Sprite = createSprite(); 
darkBlueRect.x = 23; 
darkBlueRect.y = 42; 
addChild(darkBlueRect); 

darkBlueRect.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEventHandler); 

function mouseMoveEventHandler(evt:MouseEvent):void 
{ 
    trace(darkBlueRect.mouseX, evt.localX, darkBlueRect.mouseY, evt.localY); 
} 

function createSprite():Sprite 
{ 
    var result:Sprite = new Sprite(); 
    result.graphics.beginFill(0x0000FF, 0.5); 
    result.graphics.drawRect(0, 0, 400, 400); 
    result.graphics.endFill(); 

    return result; 
} 
+1

Câu hỏi hay. Ngoài ra 'trace (darkBlueRect.localToGlobal (new Point (evt.localX, evt.localY));' sẽ cho '(x = 24, y = 42)' – shanethehat

+0

Tôi không nhận được kết quả tương tự. Các tọa độ ở cuối của sprite sẽ xuất hiện khi chúng cần (423/442 toàn cầu và 400/400 cục bộ). Cũng lưu ý rằng mySprite.localX và mySprite.mouseX giống nhau. Dù sao chỉ có lỗi tôi tìm thấy là tại nguồn gốc, X bắt đầu từ 1 không thể bấm vào 0. –

Trả lời

3

Báo cáo lỗi, bạn đã tìm thấy một:

http://bugs.adobe.com/flashplayer/

Tôi nghĩ có lẽ đó là để nhường chỗ cho một dòng áp dụng cho các sprite trong số những thứ khác, nhưng tất cả những xét nghiệm chứng minh không là trường hợp. Đây là, theo tôi, một lỗi. Nộp nó và tôi sẽ thứ hai nó, hoặc nếu bạn không thể bị làm phiền cho tôi biết tôi sẽ tập tin nó gây ra nó cần được cố định.

Cập nhật

Tôi vừa thử một thử nghiệm nơi tôi đặt stageScaleMode để cho phép mở rộng quy mô, sau đó phóng to gấp 2-3 lần cho các đối tượng và cố gắng để có được một 0/0 đọc trên MOUSE_DOWN. Chỉ cần không thể được thực hiện rõ ràng. Tôi đã có được một đọc 0 trên X cuối cùng nhưng sau đó Y là ra ngoài. Tôi nghĩ rằng vấn đề này có thể xảy ra khi flash trả về vị trí con trỏ X/Y dưới dạng Số và không phải là int, và bạn có thể nhận giá trị thập phân trên vị trí con trỏ như bạn sẽ thấy nếu bạn phóng to. chỉ là mã lỗi hoặc nó đi xuống các vấn đề chính xác điểm trôi nổi dựa trên cách tính điểm thập phân, hoặc nếu bạn không phóng to và đối tượng không được thu nhỏ, thì vòng nháy có giá trị thập phân trên int và điều này cũng có thể giải thích hành vi kỳ lạ. Dunno chỉ đoán, tôi nghĩ rằng tôi sẽ thêm kết quả của bài kiểm tra bổ sung này.

+0

Tôi muốn bỏ phiếu trên nó quá, chắc chắn có vẻ giống như một lỗi. – shanethehat

+0

nhờ liên kết, tôi sẽ gửi lỗi và gửi cho bạn liên kết. damn, tôi đã thực sự hy vọng nó không phải là một lỗi và một cái gì đó tôi đã làm sai, vì điều này có vẻ là gốc rễ của một vấn đề tôi đã phải đối mặt kể từ hôm qua: http://stackoverflow.com/questions/6855190/setting- x-tọa độ-từ-chuột-vị trí – TheDarkIn1978

+0

đây là báo cáo: http://bugs.adobe.com/jira/browse/ASL-230 – TheDarkIn1978