所以我有很多幀,並且在一個幀中我有一個帶以下代碼的動畫片段: 它增加了一個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函數,但同樣的問題。
嘗試用激活硬件加速。 – akmozo 2014-11-08 20:31:00
你是怎麼做到的?這是在Flash或Windows中的一些設置? – Chrystomath 2014-11-09 08:41:59
我給出了答案。 – akmozo 2014-11-09 10:06:56