游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2394|回复: 9

问题咨询

[复制链接]

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-10-16 21:22:00 | 显示全部楼层 |阅读模式
有什么命令可以代替TIMER控件?

我的三国游戏里用了6个TIMER控件,我用TIMER控件模拟多线程,

注意:我的TIMER控件不是用来管理时间的

目前是这样设置的:

Timer1.Interval = 1
Timer2.Interval = 1
Timer3.Interval = 1
Timer4.Interval = 1
Timer6.Interval = 1
Timer7.Interval = 1

如果谁知道请给出例子,如果太长就不用了。

以后我的游戏可能要用到10个以上的TIMER,这个不是办法......

5

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
发表于 2005-10-16 22:19:00 | 显示全部楼层

Re:问题咨询

写帖子的时候老是不知不觉就自动提交了…… -_-b
回帖补在后面。

53

主题

241

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
发表于 2005-10-16 22:23:00 | 显示全部楼层

Re:问题咨询

计时这东东无非就两种方法,一个是你惯用的Timer,一个就是GetTickCount这个API

每循环开始时读一下GetTickCount 的返回值,以你所说的有10个过程,分别按顺序(主要是因为不是多线程)判断是否已经到时间处理,如果已经到时间,继续执行该过程下面的语句,并在该过程的最后一行保存GetTickCount 的返回值,以便下次循环使用;否则跳出该过程,然后进入下一个过程进行判断。

不需要例子了吧,就一个API和几个Long型变量,再加个If...Then Exit Sub/Function

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
 楼主| 发表于 2005-10-16 22:28:00 | 显示全部楼层

Re:问题咨询

有时间再试, 我的TIMER不是管理时间用的.

53

主题

241

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
发表于 2005-10-16 22:32:00 | 显示全部楼层

Re:问题咨询

[Private] [Public] sub XXX
    If NowTime < (subTime - 1000) Then Exit Sub '循环开始时已经 NowTime = GetTickCount

    '……
    '你原来在在Time的Tick事件里的代码
    '……

    subTime = NowTime
End Sub

5

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
发表于 2005-10-16 22:32:00 | 显示全部楼层

Re:问题咨询

推荐不要用Timer。游戏最好不要使用多线程来处理,除非能确保各个线程之间绝对不会相互影响。

可以改成这样:(语法不知道对不对,忘得差不多了…… -_-b)
把工程属性设置为用Main()启动。
Public Sub Main()
    ....
    Load frmMain
    frmMain.Show
    Do While Not bExitFlag
        '把相关处理放在这里(即顺次处理原Timer1/2/3...里的内容)
        .....
        DoEvents  '处理窗口消息
    Loop
    ....
    Unload frmMain
    End
End Sub

53

主题

241

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
发表于 2005-10-16 22:33:00 | 显示全部楼层

Re: Re:问题咨询

游戏之家: Re:问题咨询

我的TIMER不是管理时间用的.


你以前说过很多遍了,我明白你的意思

0

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2005-10-16 22:43:00 | 显示全部楼层

Re:问题咨询

LendyZhang说的是正解,也是windows下写游戏的主循环模板。

187

主题

600

帖子

606

积分

高级会员

Rank: 4

积分
606
QQ
发表于 2005-10-17 11:46:00 | 显示全部楼层

Re:问题咨询

唉!游戏里面尽量不要多线程 我现在明白了!调试这样的代码我快疯了
除非你有一套读写锁存的机制,否则错误会莫名其妙的

14

主题

318

帖子

321

积分

中级会员

Rank: 3Rank: 3

积分
321
发表于 2005-10-23 16:53:00 | 显示全部楼层

Re:问题咨询

设置Timer的Index值就可以了
For i=1 to 99
  tmr(i).Interval=1
Next i
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 08:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表