hotspot_rect.top = dxmousey
hotspot_rect.right = dxmousex + 1
hotspot_rect.bottom = dxmousey + 1
'如果时机成熟,让鼠标显示.
if dxmousevisible = true then
drawmouse
end if
end sub
在调用此过程前,不要忘了设置dxmousehotx,dxmousehoty和dxmousevisible变量。
wow,那个代码很是不少,你会注意到代码前面的多数部分的一半和lucky的RefreshMouseState(刷新鼠标状态)很相似,那一部分仅仅改变了对屏幕大小和Hot Spot的支持,在Lucky的教程的源代码中,你把你的鼠标指针移出屏幕外(我不是对Lucky的语言攻击,别搞错了)。若将DXMouseHotX从屏幕的宽上减去,将DXMouseHotY从屏幕高上减去,你不得不承认你把鼠标移到屏幕外了,当DXMouseHotx正对着屏幕的右边时,鼠标会停止向右移动,对左边也是如此。
但是,那仅仅是一部分,我们还是必须“剪”下鼠标指针,否则鼠标指针就不能全部消失,那是为什么出现了if...then...else...的原因。那些代码会改变mouse_rect.right和mouse_rect.bottom,那时因为当鼠标移出屏幕时会被改变大小,改变 后的mouse_rect的right和buttom是当时正确的大小。
鼠标被剪了之后,我们若想移动hotspot_rect的位置,我们可以改变他的left,top,right和bottom来实现。
如果你向让鼠标可见,最后两行就是检查鼠标的可见,如果可见,把它画出来
这是一个小小的过程,而且它使用bltfast来在屏幕上化鼠标,使用正确的剪切方法来剪切mouse_rect的大小,我不想太过于详细的解说怎样bltfast才算是完成,你最好在lucky的教程里找找。
public sub drawmouse()
surfback.bltfast dxmousex, dxmousey, surfmain, mouse_rect, ddbltfast_srccolorkey or ddbltfast_wait
end sub
surfback是我的后备缓存,surfmain是不可见的表面,surfmain用来存储鼠标指针图片