【发布时间】:2014-07-09 09:12:09
【问题描述】:
我是使用 javascript 和 kineticJs 的新手。而且我有一个小问题,当我创建了许多对象时,动画会变慢。我以为我已经用 .destory() 删除了这些对象,但我认为不是因为项目进展缓慢。
这是我的代码:
var framesSegundo = 1000/20; //1000 seconds 20 frames
var stage, fondo;
var personaje;
var intv;
// calculate the time between one enemy and the oher one
var SegEneCreado = 0 ;
var layer = new Kinetic.Layer();
//Group with the chrachters
var grupoPersonajes = new Kinetic.Group({});
var grupoEnemigos = new Kinetic.Group({});
// screen create
var stage = new Kinetic.Stage({
container: 'game',
width: 960,
height: 640
});
//Level Create
function creaNivel(){
//creamos un personaje
personaje = new Kinetic.Rect({
width: 100,
height: 50,
x: 10,
y: stage.getHeight()/2,
fill: 'red'
});
grupoPersonajes.add(personaje);
layer.add(grupoPersonajes);
stage.add(layer);
}
//Create the enemies
function creaEnemigos(){
// we left the time of one second to create enother enemy
if (SegEneCreado <= 0){
if (aleatorio(0,1000)>970){
SegEneCreado = framesSegundo;
//create the enemies
var tipoEnemigo = parseInt(aleatorio(0,3));
if (tipoEnemigo == 0){
var enemigo = createEnemy(stage.getWidth() + 10, 0, 'green');
}
else if (tipoEnemigo == 1){
var enemigo = createEnemy(stage.getWidth() + 10, 0, 'blue');
}
else if (tipoEnemigo == 2){
var enemigo = createEnemy(stage.getWidth() + 10, 0, 'yellow');
}
else {
var enemigo = createEnemy(stage.getWidth() + 10, 0, 'C48BD9');
}
enemigo.setY(aleatorio(0,stage.getHeight() - enemigo.getHeight()));
grupoEnemigos.add(enemigo);
layer.add(grupoEnemigos);
stage.add(layer);
}
}
else{
SegEneCreado--;
}
}
function MoverEnemigos(){
for (i in grupoEnemigos.children){
var asset = grupoEnemigos.children[i];
asset.move(-5,0);
if (asset.getX() + asset.getWidth()<0){
console.log(asset.getX() + asset.getWidth()<0);
asset.move(0,0);
asset.remove();
}
}
}
//random value
function aleatorio(inferior, superior){
var posibilidades = superior - inferior;
var random = Math.random() * posibilidades;
random = Math.floor(random);
return inferior + random;
}
function createEnemy(x, y, color){
var enemy = new Kinetic.Rect({
width: 100,
height: 50,
x: x,
y:0,
fill: color
});
return enemy
}
creaNivel();
intv = setInterval(frameLoop,framesSegundo);
function frameLoop(){
creaEnemigos();
MoverEnemigos();
stage.draw();
}
我也是论坛的新手......我发现了一些关于变慢的事情,但我认为这是一个不同的问题。
谢谢
【问题讨论】:
标签: javascript performance kineticjs