Nokia S60的几个问题

博客主要围绕Nokia机型开发展开,指出不能每帧调用System.gc(),否则会降低fps。还提到Nokia S60不同机型对translate和setClip处理不同,给出统一代码的画子图函数。此外,针对部分Nokia机型退出报错null pointer exception,给出了修改调用destroyApp方式的解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 不能每帧调用 System.gc(),否则严重降低fps

2. Nokia S60机器的不同机型对于translate 和 setClip的处理不一样。在Nokia N-Gage QD等机型中,setClip是相对于translate以后的坐标计算的,而在Nokia 6600,6670等机型中,setClip不受translate的影响,永远只相对于屏幕左上角(0,0)点计算。所以如果在Nokia6670中, 使用先translate再setClip的方法画子图,则会出现错误。为了统一代码,在NokiaS60中不要使用translate,即使使用,两次 translate之间不要进行setClip.修改后的画子图函数为:
public static void drawSubImg(Graphics g,Image img,int x,int y,int sx,int sy,int swidth,int sheight)
 { 
  g.setClip(x,y,swidth,sheight);  
  g.drawImage(img,x-sx,y-sy,GLT) ; 
  g.setClip(0,0,width,height) ;
 }

3. 部分Nokia机型(6600,6670等)退出后报错null pointer exception的解决方法
不要在在主while循环中调用destroyApp,而改成检测一个标志,退出主循环后再调用destroyApp
boolean exit ;
...
while(!exit){
...
  if(...){
    exit = true ;
  }
...
}

destroyApp(true)

注:可在destroyApp内部调用notifyDestroyed
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值