打印本文 打印本文 关闭窗口 关闭窗口
GIFs, JPGs和DirectInput Mouse在用VB做游戏的运用
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1855  更新时间:2009/4/23 16:38:15  文章录入:mintao  责任编辑:mintao
t = 32
Else
Let Mouse_Rect.Right = 640 - DXMouseX
End If


If DXMouseY <= 448 Then
Let Mouse_Rect.Bottom = 32
Else
Let Mouse_Rect.Bottom = 480 - DXMouseY
End If

HotSpot_Rect.Left = DXMouseX
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用来存储鼠标指针图片

 


特别感谢Lucky和他的DirectX教程

编程愉快,

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口