| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1278 人关注过本帖
标题:请问用MFC制作游戏位图刷帧应该如何做啊?
只看楼主 加入收藏
edward38ljh
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-12-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
请问用MFC制作游戏位图刷帧应该如何做啊?
本人刚刚学了位图输出,想自己试试做一个游戏看看。当我在ONPAINT里写了第一夜位图后,发现我已经不知道下一页位图应该怎么写了。而且又不知道应该如何去控制刷帧。想让游戏动起来,又不知怎么做。
我在VC6里单步运行,看见进入AFXAPI AfxWinMain函数里,然后到了if (!pThread->InitInstance())就显示画面了。我在百度里找到了一个settimer的函数,看起来有类似刷帧的效果。但有不知道应该怎么使用才可以刷帧。结果一直停留在第一页位图里。
请问应该如何才可以做到位图刷帧,播放动画的效果啊?
还有如果以后要用按键来控制移动应该在哪里判断呢?
搜索更多相关主题的帖子: 游戏 百度 如何 
2012-12-26 21:17
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
位图刷帧?你是说一个gif格式的多帧图片?还是说多个图片的转换?

如果是gif格式的图片,好像有人提供过一个控件(重绘控件)来实现过,网上找找看咯。搜索 gif 相关的vc源代码估计能出来了
如果是多个图片轮着转换的,可以启动一个计时器,在计时器事件中 根据索引绘制不同的图片就可以达到图片动起来的效果了

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-27 08:35
mmmmmmmmmmmm
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:8
帖 子:388
专家分:1809
注 册:2012-11-2
收藏
得分:0 
学习一下

我们的目标只有一个:消灭0回复!
while(1)
++money;
2012-12-27 12:51
edward38ljh
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-12-24
收藏
得分:0 
回复 2楼 yuccn
不是GIF图片,是整个画面的更新~应该怎么做啊?因为玩游戏的时候画面不是动的吗?要怎么才可以让画面都起来?
2012-12-27 15:55
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:10 
比如准备十张图片,
用一个计时器定时去绘制,开始的时候索引为index = 0,在计时器事件中 绘制第index张图片,index ++,index = 10 的时候 index = 0.

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-27 20:42
edward38ljh
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-12-24
收藏
得分:0 
回复 5楼 yuccn
请问定时器应该写在哪里啊?还有应该怎么用啊?后面的回调函数是写的呢?这几天我见那些游戏制作入门的书里的WinMain都与MFC里面的不同,请问是自己写的吗?WinMain可以重载的吗?
2012-12-27 23:27
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:10 
只要又窗口就可以设置计时器了
::SetTimer()
KillTimer()

你查下这两个api用法

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-28 00:17
黛玉他哥
Rank: 1
来 自:兰州理工大学
等 级:新手上路
帖 子:3
专家分:2
注 册:2012-12-30
收藏
得分:0 
WinMain ()是SDK编程模式下的,MFC对SDK进行了封装,所以表现形式有所不同,可以设置一个定时器,
UINT_PTR SetTimer(
  HWND hWnd,              // handle to window
  UINT_PTR nIDEvent,      // timer identifier
  UINT uElapse,           // time-out value
  TIMERPROC lpTimerFunc   // timer procedure
);
这是SDK下的定时器函数,响应的在窗口处理函数中响应WM_TIMER消息。其中处理刷新等事务,MFC下SetTimer为CWnd类的成员函数,直接调用便可,SetTimer(1,1000,NULL);
此意思是设置一个定时器,定时间隔为1秒,NULL为交给默认定时器处理函数处理。再在MFC中添加 WM_TIMER消息。
2012-12-30 21:56
快速回复:请问用MFC制作游戏位图刷帧应该如何做啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049115 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved