2016-12-29 5 views
0

PIXI.jsでゲームを書いています要するに、すべてが意図どおりに機能するということです。しかし、コンソールのある時点で警告が表示されます。「WebGL:INVALID_ENUM:activeTexture:テクスチャユニットが範囲外です。」とテクスチャが少し点滅します。警告Pixi.jsのゲームのコンソールで「WebGL:INVALID_ENUM:activeTexture:テクスチャユニットが範囲外です」

このエラーは、奇妙な時間に表示され、同時にモンスターを作成するためのクラスとモンスターを動かす彼の方法があります

を失った:私は4を作成

function Monster (monsterImages, startX) { 
    this.hideEnemy = false; 
    var frames = []; 

    for (var i = 0; i < monsterImages.length; i++) { 
     var texture = Texture.fromImage(monsterImages[i]); 
     frames.push(texture); 
    } 

    this.movieclip = new PIXI.extras.AnimatedSprite(frames); 

    this.movieclip.scale.x = -1; 
    this.movieclip.anchor.set(0.5); 
    this.movieclip.width = 170; 
    this.movieclip.height = 140; 
    this.movieclip.x = startX; 
    this.movieclip.y = getRandomIntValue(Position.START_Y + this.movieclip.height/2, Position.END_Y + this.movieclip.height/2); 
    this.movieclip.animationSpeed = 0.4; 

    this.movieclip.play(); 
    gameScene.addChild(this.movieclip); 
} 

Monster.prototype.updatePosition = function() { 
    if (this.movieclip.x > Position.END_X - this.movieclip.width/2) { 
     this.movieclip.x -= Position.STEP_X; 
    } else { 
     // this.hideEnemy = true; 

     this.movieclip.x = Position.START_X; 
     this.movieclip.y = getRandomIntValue(Position.START_Y + this.movieclip.height/2, Position.END_Y + this.movieclip.height/2); 
    } 
}; 

は、モンスター:その後、私は楽章

for (var i = 0; i < 4; i++) { 
    enemy[i] = new Monster(monsterSprites[i], 1920 + 170 + gapBetweenBirds); 
    gapBetweenBirds+=500; 
} 

私が始めたときの方法「updatePosition」によってそれらをE、およびそれがシーンの外にある場合、私はこのモンスターの配列から切り出し、そして新しい:

for (var i = 0; i < enemy.length; i++) { 
     enemy[i].updatePosition(); 
     if (enemy[i].hideEnemy) { 
      enemy.splice(i, 1, new Monster(monsterSprites[getRandomIntValue(0,monsterSprites.length - 1)], 1920 + 170)); 
     } 
    } 

に問題を挿入するようになりました配列内のモンスターを置き換える。私は問題がそこにあると思うが、少しの経験のために彼女を捕まえられない。

答えて

0

私は問題を決めました。レンダリングで使用されているので、配列から削除したオブジェクトを破棄する必要があります。

私は、だから私は

Monster.prototype.updatePosition = function() { 
    if (this.movieclip.x > Position.END_X - this.movieclip.width/2) { 
     this.movieclip.x -= Position.STEP_X; 
    } else { 
     this.hideEnemy = true; 
     this.movieclip.destroy(); 
     this.movieclip = null; 
    } 
}; 
を持ってMonster.prototype.updatePosition

this.movieclip.destroy(); 
this.movieclip = null; 

を追加

関連する問題