先声明一下,那程序作者可不是我,呵呵我把大致的内容贴出来吧
使用的是自创的的“交点法寻径”,在js上表现不错,可以一次性给十几个单位寻径;在as中不行,只能给一个单位寻径,距离远了还很慢,可见js的运算效率是高于as的现在改用flash开发星际online后,遇到了与js同样的问题,在多人同时移动时速度成几何级下降。这就是用脚本开发此类游戏的最大问题,cpu占用率奇高,其实cpu只用一小部分用于脚本的运算,大部分资源都消耗在图形的绘制上了,这个问题很难解决也很难回避啊本来以为flash表现会好些,还是一样,郁闷死了,没有心情再扩展游戏功能了。如果哪位兄台有这方面的好方法,可一定得告诉我一声哦
我这几天也在反思这个问题,并做了些试验1.在flash中,平缓移动一张800*600的大位图,cpu占用率立刻升到100%,而在js中,只会升到60%左右2.如果位图移动出屏幕之外,两者cpu占用率很快降到5%以内以下的试验只针对js:3.如果该位图是普通彩图,cpu占用率如上所述有60%左右;而如果该位图为纯黑块,cpu占用率只有5%以下,可见cpu占用率和图片色彩或图片复杂度有绝对关联4.多个位图同时移动,即使位图都很小(10*10以下),cpu占用率也会大幅增加。所以窗口重绘cpu占有率与重绘数量也有很大关系。结论是:不管在js中还是在flash中,都需要合理分配动画,尽量不移动大背景,避免同时移动多个物体,使用卡通图形减少图片复杂程度,减小显示区尺寸,都可以有效降低cpu占用率,保证动画的流畅程度只是这个结论也决定了,用脚本做星际,虽然编程方法已经实现,但是我们还必须在以下方法中选择:要不大大减小显示区尺寸,要不使用activex控件,要不干脆等到html支持directx加速的那一天
使用的是自创的的“交点法寻径”,在js上表现不错,可以一次性给十几个单位寻径;在as中不行,只能给一个单位寻径,距离远了还很慢,可见js的运算效率是高于as的现在改用flash开发星际online后,遇到了与js同样的问题,在多人同时移动时速度成几何级下降。这就是用脚本开发此类游戏的最大问题,cpu占用率奇高,其实cpu只用一小部分用于脚本的运算,大部分资源都消耗在图形的绘制上了,这个问题很难解决也很难回避啊本来以为flash表现会好些,还是一样,郁闷死了,没有心情再扩展游戏功能了。如果哪位兄台有这方面的好方法,可一定得告诉我一声哦
我这几天也在反思这个问题,并做了些试验1.在flash中,平缓移动一张800*600的大位图,cpu占用率立刻升到100%,而在js中,只会升到60%左右2.如果位图移动出屏幕之外,两者cpu占用率很快降到5%以内以下的试验只针对js:3.如果该位图是普通彩图,cpu占用率如上所述有60%左右;而如果该位图为纯黑块,cpu占用率只有5%以下,可见cpu占用率和图片色彩或图片复杂度有绝对关联4.多个位图同时移动,即使位图都很小(10*10以下),cpu占用率也会大幅增加。所以窗口重绘cpu占有率与重绘数量也有很大关系。结论是:不管在js中还是在flash中,都需要合理分配动画,尽量不移动大背景,避免同时移动多个物体,使用卡通图形减少图片复杂程度,减小显示区尺寸,都可以有效降低cpu占用率,保证动画的流畅程度只是这个结论也决定了,用脚本做星际,虽然编程方法已经实现,但是我们还必须在以下方法中选择:要不大大减小显示区尺寸,要不使用activex控件,要不干脆等到html支持directx加速的那一天
解决方案 »
- iPad上的css3 scale(放大/缩小)效果不流畅
- JQuery 选择器 this的问题,请教!
- javascript 小数1.0 转换为 字符串"1.0"
- JS代码中代入ASP变量的问题
- 如何获取<a href="a.aspx">XXX </a>中XXX的值。马上给分 100分
- 页面加载时都会生成页面元素的dom树吗,dom树和w3c标准有关系吗?
- 急,检测表单的两个日期格式,并且检测是离店日期是不是大于入住日期。在线等。
- 怎么去掉textfield自动带的滚动条?救命!
- 我想教我女朋友学基本的HTML。请问哪里有中文的HTML TAG的参考?
- 请问浏览器最小化后,能不能让他自动再恢复原来的状态,或自动变为所有窗口的最上面?
- 如何将javascript中的值传到c#的方法中?急!!
- 急!!请各位大虾指教
-----最新推出:星际争霸online-----
http://starcraft.51ym.com/sc/-----JS游戏开发基地-----
http://starcraft.51ym.com/home/星际争霸online源代码(希望大家尊重幻宇的劳动成果)
http://starcraft.51ym.com/download/jssc_online.rar
不可能!
是你的代码没写好而已。差别最大的就是数组,你用循环写10万长度的数组测试一下,vbs比js快n百倍
<script>
var d=new Date(),d1=d.valueOf()
var a=new Array(),p=new pt()
for(i=0;i<20000;i++){
//a.x=3
//a.y=4
p.setv("3,2")
}
var d=new Date(),d2=d.valueOf()
alert("使用点类赋值,耗时"+(d2-d1)+"ms")function pt(x,y){
this.setv=function(x,y){
if(y!=null){
this.x=parseInt(x)
this.y=parseInt(y)
}
else{
var a=x.split(",")
this.x=parseInt(a[0])
this.y=parseInt(a[1])
}
this.v=this.x+","+this.y
}
if(x!=null)
this.setv(x,y)
}</script>作为比效,这是普通数组赋值,达到同样功能的代码
<script>
var d=new Date(),d1=d.valueOf()
var a=new Array(),p=new pt()
for(i=0;i<20000;i++){
a.x=3
a.y=4
//p.setv(3,2)
}
var d=new Date(),d2=d.valueOf()
alert("使用数组赋值,耗时"+(d2-d1)+"ms")function pt(x,y){
this.setv=function(x,y){
if(y!=null){
this.x=parseInt(x)
this.y=parseInt(y)
}
else{
var a=x.split(",")
this.x=parseInt(a[0])
this.y=parseInt(a[1])
}
this.v=this.x+","+this.y
}
if(x!=null)
this.setv(x,y)
}</script>
看到了吧,同样的功能,使用类耗时巨大
/ __ \ __ __ /\ \ /\ \
/ /_/\ \ /\ \ /\ \\ \ \ \ \ \
/\ \ \ \ \\ \ \ \ \ \\ \ \ \ \ \
\ \ \_\_\ \\ \ \_\_\ \\ \ \___\ \ \___
\ \_______\\ \_______\\ \____\\ \____ \/_______/ \/_______/ \/____/ \/____/
__ ___ ____ __ ________
/\ \ |\ \| _\ _______ /\ \ /\ _____ \ \ \ \| \\\ \/ /\ ___ \\ \ \ \ \ \___/_
\ \ \ | \\\ \ \ \ \_/\ \\ \ \ \ \ ____\
\ \ \| |\ \/ \ \ \ \\_\ \\ \ \__ \ \ \___/
\ \___|\\___/| \ \______\\ \____\\ \___\
\|___| |___|/ \/______/ \/____/ \/___/