2011-07-31 29 views
23

Tôi đang cố sử dụng con trỏ tùy chỉnh cho trò chơi trực tuyến, trong trường hợp này đó là phạm vi bắn tỉa.Điểm tương tác con trỏ tùy chỉnh - CSS/JQuery

Vấn đề là khi tôi tham chiếu con trỏ qua CSS, điểm tương tác vẫn ở trên cùng bên trái của biểu tượng, trong khi đó cần phải là trung tâm chết của biểu tượng cho con trỏ để tạo bất kỳ ý nghĩa nào.

Đây là con trỏ:

cursor:url(http://www.seancannon.com/_test/sniper-scope.cur),default; 

Dưới đây là một bản demo: http://jsfiddle.net/9kNyF/

Nếu bạn đặt dấu chấm đỏ từ con trỏ qua các dấu chấm màu đỏ Tôi tạo ra trong bản demo, nó sẽ không bắn các nhấp chuột biến cố. Bạn phải cố gắng nhắm vào góc trên cùng bên trái của nó.

Nếu bạn đặt con trỏ trở lại cursor:default; bạn sẽ thấy sự kiện nhấp nháy chỉ hoạt động tốt, đó chỉ là vấn đề "nhắm" con trỏ.

Trò chơi được mã hóa trong JQuery vì vậy nếu tôi cần phải thêm một số logic ở đó để bù đắp con trỏ hoặc một cái gì đó lame, do đó, được nó. Lý tưởng nhất là tôi muốn đây là một bản sửa lỗi CSS.

Cảm ơn!

+1

Nó làm việc cho tôi trong IE9 không có vấn đề gì. –

+0

@ Jason công bằng tôi đã không kiểm tra trong IE haha, nhưng tốt để biết! thanks :) – AlienWebguy

+0

Không sao cả. Tôi không thường lướt sóng với nó ... nhưng tôi đang ở trên một máy tính khác tối nay. ;-) –

Trả lời

47

Bạn chỉ cần cung cấp <x><y> vị trí của điểm nóng trong CSS của bạn:

Trong ví dụ của bạn, trung tâm sẽ xảy ra là 24px từ đầu/trái (con trỏ ass lớn lol)

cursor:url(http://www.seancannon.com/_test/sniper-scope.cur) 24 24,default; 

http://jsfiddle.net/9kNyF/15/ xem?

+6

wow dude +1 Tôi thậm chí không biết về các thông số đó. – AlienWebguy

+0

cảm ơn! đây là tài liệu tham khảo của tôi http://css-infos.net/property/cursor – Maverick

+1

Wow, tôi chưa bao giờ thấy các tham số đó. 1 để dạy tôi điều gì đó mới mẻ. – brenjt

2

Khi không kích hoạt sự kiện nhấp, hãy thử đặt điều này xung quanh trình xử lý sự kiện của bạn.

$(function(){ 
    $('#point').click(function(){ 
     alert('clicked point'); 
    }); 
}); 

Với việc căn giữa các sợi ngang, có thể dễ dàng hơn khi sử dụng div trên nền của hình ảnh và sử dụng jQuery để đặt con trỏ lên vị trí chính xác.

<div id="crosshairs"></div> 
<script> 
$(function(){ 
    $("body").mousemove(function(e){ 
     var CrossHairWidth = $('#crosshairs').width(); 
     var CrossHairHeight = $('#crosshairs').height(); 
     $('#crosshairs').css('top', e.pageY - (CrossHairHeight/2)); 
     $('#crosshairs').css('left', e.pageX - (CrossHairWidth/2)); 
    }); 
}); 
</script> 

Bạn sau đó giấu con trỏ làm một cái gì đó giống như vậy: cursor: url(http://www.seancannon.com/_test/transparent.png), default;

+0

JSFiddle tự động kết thúc mã trong bảng JavaScript với điều đó nếu một cài đặt nhất định được đặt (có cài đặt nào). – icktoofay

+0

Nhưng nếu '# crosshairs' div luôn nằm dưới con trỏ, các nhấp chuột sẽ đi qua div như thế nào và nhấp vào những gì tôi muốn nhấp vào canvas? – AlienWebguy

+0

Ngoài ra, sự kiện nhấp chuột hoạt động, nó chỉ là các dấu thập đang thiếu điểm. Tôi có thể kích hoạt sự kiện nhấp chuột với dấu thập phân nếu tôi nhắm mục tiêu chấm đỏ khoảng 15px xuống và sang phải của dấu chấm màu đỏ trong '# wrapper'. Đặt 'cursor: default;' và bạn sẽ thấy bạn có thể nhấp vào nó. – AlienWebguy

2

bất cứ công cụ mà bạn sử dụng để tạo các con trỏ, nên có một tùy chọn để quản lý khu vực nhấp chuột mục tiêu. Bạn sẽ theo đuổi bạn đuôi tìm kiếm một giải pháp javascript/css.

+0

Tôi thực sự tìm thấy con trỏ này trực tuyến. Làm lại con trỏ là tốt với tôi nhưng tôi nhớ lại hầu hết những ứng dụng tạo con trỏ đó là phần mềm chia sẻ crap haha. Bất kỳ đề xuất? – AlienWebguy

+0

@AlienWebguy Tôi thấy đây là lựa chọn tốt nhất. Plugin cho photoshop (hoạt động với cs6 trên mac) cho phép bạn lưu các tập tin cur. http://www.telegraphics.com.au/svn/icoformat/trunk/dist/README.html – Kostia

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