来电.java_[JavaME]解决来电问题(Incoming Call)

比如你的游戏正在进行中,却突然一个电话,那么你能保证你的游戏不死机吗?

解决来电问题,唯一需要做的就是重载Canvas的hideNotify()方法。

just like this:

731655954c7be9d8835ece551b5385f8.pngbooleangameIsPaused;

731655954c7be9d8835ece551b5385f8.png 

24a924a57ba6b3f2b51fc9edb7ea4186.png

9310e85a14af99de4811ff4c77f1f911.pngprotectedvoidshowNotify()222530190136c9c4cfd237cc0d5cff99.png{  gameIsPaused=false;

f466905a3bcb5dcef110eab799825254.png}731655954c7be9d8835ece551b5385f8.png 

24a924a57ba6b3f2b51fc9edb7ea4186.png

9310e85a14af99de4811ff4c77f1f911.pngprotectedvoidhideNotify()222530190136c9c4cfd237cc0d5cff99.png{

1408c5260b2f05e450dee929db9be5f7.png  gameIsPaused=true;

f466905a3bcb5dcef110eab799825254.png}731655954c7be9d8835ece551b5385f8.png 

24a924a57ba6b3f2b51fc9edb7ea4186.png

9310e85a14af99de4811ff4c77f1f911.pngprivatevoidtheMainGameLoop()222530190136c9c4cfd237cc0d5cff99.png{

715f2d05503b99d41f3b6ba2cdccc84d.png

e083dfde5a91f50979fe8979b4012b9d.pngwhile(gameIsRunning)222530190136c9c4cfd237cc0d5cff99.png{

715f2d05503b99d41f3b6ba2cdccc84d.png

e083dfde5a91f50979fe8979b4012b9d.pngif(!gameIsPaused)222530190136c9c4cfd237cc0d5cff99.png{

1408c5260b2f05e450dee929db9be5f7.png//process events and update the screen5bcb1807ee3e00d2b3c225f0b3f5c751.png}5bcb1807ee3e00d2b3c225f0b3f5c751.png  }f466905a3bcb5dcef110eab799825254.png}

不过,正像下面的帖子中谈到的,Nokia 7650机型的问题是无法克服的,当你接电话时关闭了游戏,那么电话打完后你也无法启动游戏了,除非重启手机。

可供参考的帖子:

http://forum.java.sun.com/thread.jspa?forumID=76&threadID=581789

http://forum.java.sun.com/thread.jspa?forumID=76&threadID=376907

参考的资料《Nokia 中的暂停功能》:实际上,当MIDlet 隐藏时,它总是处于暂停状态。这在游戏应用软件中尤其重要,因为,如果在游

戏被隐藏时没有立刻暂停,游戏者可能会输掉游戏。

可以用类Displayable 的方法isShown()或者类Canvas 或CustomItem 的方法 hideNotify() 来暂停MIDlet。

在Canvas 对象离开显示屏后,方法hideNotify()将被立刻调用。在方法hideNotify()中创建

一个自动暂停机制,用来暂停线程、关闭计时器、保存重要数值等。参见下面的代码范例:

protected void hideNotify()

{

//执行暂停时的操作

remainingTime = endTime – System.currentTimeMillis();

myThread.stop();

autoPaused = true;

repaint();

// Include a pause test in paint() method to check if paused

// paint a pause message on screen if autoPaused true

}

protected void paint(Graphics g)

{

// paint game screen here

if (autoPaused == true) {

// paint pause message

}

}

暂停之后的操作是继续,故需要把Continue 选项显示给用户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值