魅族M8开发初识及一点思考

来源:互联网 发布:拳击手套淘宝 编辑:程序博客网 时间:2024/05/01 19:00

近日比较寂寞,公司的开发任务也比较轻松。于是向同学低价买了台2手魅族M8玩玩,初次接触惊叹于M8惊艳的电容触摸屏,感觉比Iphone的还好点,这就激起了我对研究这款机器的兴趣。下面就是我这几天研究的心得。

根据M8的SDK帮助文档描述,安装完Meizu M8 Application Wizard后可以在VS2005和VS2008中新建工程文件,顺序VC++ -> Meizu M8 Device MZFC App,但是我发现这样会创建工程文件失败。用尽各种GOOGLE来的方法都没效果,但是笔者发现Sample中的例子都能正常运行。

于是笔者发现只有以下唯一一种办法能新建立工程: VC++ -> 智能设备 -> 选择M8SDK 创建新工程,然后将新工程中的CPP内容清除,将Sample中Hello World的CPP内容copy过来,OK 运行正常。

关于M8模拟器/仿真器 显示过大的问题,因为M8真机的屏幕分辨率相当高,而PC上的仿真器分辨率和真机一样,但是我们PC上常用的分辨率(1024*768)比M8的要低,于是要将PC分辨率调整到1280*960才能正好完美显示魅族M8的仿真器。

如下图所示:

        

魅族M8所提供的SDK中的文件来看,M8对开发者操作底层的东西还是提供了很多支持,甚至感觉开放了些不该开放的内容,利用这些完全可以做邪恶的东西。

M8的库文件中有,d3dm.lib,d3dmx.lib,ddraw.lib 这3个支持DirectX的库文件,比正常的WM DirectX 少了对纹理支持及D3DM数学应用的库文件,  也没有相应的H文件支持。但是对3D操作上面,M8提供了对OPENGL ES的支持,但是这东西貌似不是通过硬件加速来渲染3D。  可能是DX3D的硬件开发成本比较高,技术上比较难搞定,M8虽然保留了DX3D的接口,但是并不提供相应的API,相对来说OPENGL ES是个不错的替代品(OPENGL ES,M8应该是采用三星CPU做硬件加速渲染,复杂的3D Mesh肯定会导致游戏卡死)。还没测试GAPI是否能在M8上面使用。

M8的程序结构并不是WinCE的标准结构,封装了很多基本的程序,省去了很多不必要的麻烦,程序精简干练了很多。个人感觉,M8的程序结构和用法更类似于J2ME。M8很多东西属于高度封装的,建议多参考SDK,个人感觉M8的SDK 比 MS的好多了。

建立简单的程序如下面2步:(摘入自M8SDK)

1. 从CMzWndEx派生一个新的窗口类(通常是程序的主窗口),重载 CMzWndEx::OnInitDialog() 并在其中初始化窗口中的控件。

2. 从CMzApp派生一个新的应用程序类(例如class MyApp: public CMzApp{...};), 并定义它的一个全局变量(例如 MyApp theApp;),重载 CMzApp::Init()成员函数并在其中创建并显示应用程序的窗口。

M8的控件使用简单来说分为以下几步: 注册控件(有些控件不需要) -> 设置控件属性 -> 添加控件到界面。

M8的控件响应操作(以按钮为例):

    重载该方法 virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) ---> 根据消息机制写相应的代码。

 

M8提供了Sqlite轻量型数据库的支持。类库也很丰富,对于熟悉VC++的人来说开发不是很困难。

M8的SDK目前不支持.net CF, 但是PPC的.net CF程序,可以运行在M8上面(或者通过LBE游戏助手的帮助)。

不要梦想WM的3D程序能很快的移植到M8上来,那是短期内不可能实现的。我试图移植1个以前用.net开发的2D连连看(WM 6),没有成功。

 

 

欢迎大家没事来我网站转转www.j2megame.com 仅提供技术资料~!~

 

原创粉丝点击