谁闲着没事干的,帮我看下这个问题 http://download.csdn.net/source/2086425俄罗斯方块,已经完成移动和旋转时有声音,可是当我定定按住不放时,久了声音会变得卡卡的,而且内存上涨,CPU使用率也上涨播放声音在GameCanvas的keyPressed里 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 估计是你用List容器装东西之后,没用施放用完的东西,造成每次从List里面取东西的时候都要循环很多次,当然玩得越久运行效率就越低了 我所说的内存上涨和CPU上涨并不是图形方块的问题,而是播放那个音频文件导致的,如果不播放那个文件根本没见有内存上涨的现象,因为图形方块消行后我都会检查并消除这个对象 定定按住不放时,keyPressed事件不停触发,因此一直在if (moveMusic != null){ moveMusic.stop(); System.gc(); } moveMusic = new Music(System.getProperty("user.dir") + "/sound/move.wav"); moveMusic.start();一直新建Music对象,因此声音卡卡,而且占用内存建议你在GameCanvas中设置boolean变量up_pressed,down_pressed等等然后在keyPressed事件中设置其为true,keyReleased事件中设置其为false;播放时以up_pressed等变量的值作为判断条件,若为false则不新建Music 恩,说的好,感觉是这个问题。用一个static变量吧,然后用的时候改就行了,毕竟同一时间播放两个不同声音的情况比较少吧。 你的意思是若为true就新建Music吗?这样不是和我现在的代码一样的吗?按住不放,变量肯定为true,那不就一直新建了吗 为true只是条件之一,另外的条件是Music.isAlive()你的music不是继承了Thread么?这样判断一下,播放音效的线程是否跑完了,保证每一个音效能够完整播放完,再由下一个按钮事件触发播放 我的代码是music不等于空就会终止,只是不能马上释放内存,也不可能控制得了吧,线程终止,声音就不会被播放了,可是不知道为什么会出现声音卡卡的 ......原来你希望声音卡卡的......但是new Music要有限度,至少也要在Music = new Music之前写个movemusic = null;我以前写的时候,一共就4种音效,因此都写成了静态对象,作为GamePanel的4个变量,就是用上面定的标志位决定是否播放你如果不想卡卡的,就事先建好,数量固定,不要每次都new,这样也不要用alive做判定了 不知道让moveMusice=null;有什么用 请教下动态代理的作用 我的第一个struts程序,遇到无比巨大的困难,恳求高手指点一二。 中文显示问题?!急 一个多线程判断是否都执行完成的问题 在服务器端有个文件正在下载,现在想把他删除,可是报错文件正在使用.应该怎删除 求助...求助...求助...!!!Jdk+Tomcat+MS SQL Server2000问题 关于System.err.println问题 下载Java大全 简单问题大家快来!在线等候! 一道SCJP的题 大家帮我调试下,共10来行代码。找不出问题。闷。 java程序设计与问题解决第4版《高级篇》
moveMusic.stop();
System.gc();
}
moveMusic = new Music(System.getProperty("user.dir") + "/sound/move.wav");
moveMusic.start();一直新建Music对象,因此声音卡卡,而且占用内存
建议你在GameCanvas中设置boolean变量up_pressed,down_pressed等等
然后在keyPressed事件中设置其为true,keyReleased事件中设置其为false;
播放时以up_pressed等变量的值作为判断条件,若为false则不新建Music
恩,说的好,感觉是这个问题。
用一个static变量吧,然后用的时候改就行了,毕竟同一时间播放两个不同声音的情况比较少吧。
你的music不是继承了Thread么?
这样判断一下,播放音效的线程是否跑完了,保证每一个音效能够完整播放完,再由下一个按钮事件触发播放
我的代码是music不等于空就会终止,只是不能马上释放内存,也不可能控制得了吧,线程终止,声音就不会被播放了,可是不知道为什么会出现声音卡卡的
但是new Music要有限度,至少也要在Music = new Music之前写个movemusic = null;
我以前写的时候,一共就4种音效,因此都写成了静态对象,作为GamePanel的4个变量,
就是用上面定的标志位决定是否播放
你如果不想卡卡的,就事先建好,数量固定,不要每次都new,这样也不要用alive做判定了