ActionScript 3重复点击会减慢程序的速度
所以我有很多帧,并且在一个帧中我有一个带以下代码的动画片段: 它增加了一个Shape来绘制一些生物细胞,当某个特定按下名为'测试'的movieclip。 'morphogen1',...是可以拖动的其他影片剪辑。ActionScript 3重复点击会减慢程序的速度
cells = new Shape()
this.addChild(cells)
this.setChildIndex(cells,1)
function drawcell(xx,yy){
if(logic(xx,yy)){col=0xFF4444}else{col=0xFFBBBB}
with(cells.graphics){
beginFill(col)
drawCircle(xx,yy,5)
endFill()
}
}
function drawcells(){
for(i=0;i<=15;i++){
for(j=0;j<=10;j++){
drawcell(i*22,j*14)
}
}
}
function dist(x1,y1,x2,y2){
return Math.exp(-((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))/50000)
}
function logic(xx,yy){
va = dist(xx,yy,morphogen1.x,morphogen1.y)
vb = dist(xx,yy,morphogen2.x,morphogen2.y)
vc = dist(xx,yy,morphogen3.x,morphogen3.y)
if(ctrl==1){sa=(va>0.5)}else{sa=(va<vb)}
return sa&&(vb>0.5)&&(vc>0.5)
}
test.addEventListener(MouseEvent.CLICK, swap)
function swap(e:MouseEvent){
ctrl = 1-ctrl
drawcells()
}
它按预期工作,但点击“测试”越多,程序越慢;通过30次点击,滞后非常明显。
我是一个业余程序员 - 可能我犯了一些主要的nono;事件监听器是否堵塞了cpu?我试过用简单得多的东西去除Math.exp函数,但同样的问题。
要启动硬件加速您的SWF文件,去文件>发布设置...或者干脆CTRL(WIN)/ Cmd的(MAC)+ 移 + F12,你会得到这个窗口,并在底部选择了硬件加速:
谢谢你的建议。我已经尝试了更多。问题不在于速度;即使您在点击之间留下大量时间,下一次点击仍然会滞后一秒左右。 – Chrystomath 2014-11-09 15:16:38
我认为这是一个内存泄漏问题,在这种情况下,您可以在绘制单元之前使用'cells.graphics.clear()'清除'cells.graphics'。 – akmozo 2014-11-09 17:55:27
工作正常!你是一个拯救生命的人。抱歉,我没有足够的声望投票回答! – Chrystomath 2014-11-09 20:19:27
尝试用激活硬件加速。 – akmozo 2014-11-08 20:31:00
你是怎么做到的?这是在Flash或Windows中的一些设置? – Chrystomath 2014-11-09 08:41:59
我给出了答案。 – akmozo 2014-11-09 10:06:56