微软,还我Input.Touch模块

在XNA4 CTP 的时候,Input.Touch模块给我留下了很好的印象。

我已经全面抛弃了键盘鼠标的事件处理,投入touch的怀抱。

因为我是把鼠标模拟成一个touch点,而直接touch屏幕,如果touch事件无响应也会被转成一个鼠标事件,又转回模拟的touch点。

所以我一直没有发现 XNA4 BETA真的把Input.touch给阉割了。

这是无法接受的残酷事实,

我立即动刀,从还没重装的HP TX2z上剥出来Input.Touch 和 XNA.Framework 的 dll,反编译,修改,测试,折腾了好久。

终于Input.Touch又回来了

先可耻的利用反编译来分析到底发生了什么

image

大概看懂了以后,就动刀,动刀,再动刀

image image 把framework和CTP版XNA4 的input.touch的部分模块组合成一个项目

使用稍微多了一点点东西,因为Game模块肯定也有点儿猫腻,只需要一行初始化就可以解决,所以我没有去碰Game模块

image 使用时不需要原来的Input.Touch模块,带上我们的模块就行了

image 命名空间不变,这样以前的代码不需要修改

值得一提的是 image 这个函数我也进行了修改,可以返回真实的多点触摸数,原来是固定返回4。

这是唯一多出来的一行:

TouchPanel.WindowHandle = this.Window.Handle;

image

这个原先的Game模块肯定是自动初始化的,我们现在就加一行,不用搞Game模块,多么快乐啊。

问题得以妥善的解决,非常开心。

附此越轨项目svn地址,至此文毕,仍然没有理解微软要阉割此功能的理由。有多点触摸屏幕的电脑难道不是会越来越多,为什么要CTP有,BETA却阉割掉了,希望不会正式版又恢复这个功能,那我今晚这趟折腾为哪般啊。

https://crazylights.googlecode.com/svn/CLGE_XNA/test

posted @ 2010-11-03 23:17  疯光无线  阅读(490)  评论(0编辑  收藏  举报