0

配列を反復処理し、javascript で画面に描画するコードがいくつかあります。ただし、配列が 1 つの要素よりも大きい場合、型エラーが発生します。オブジェクトにはメソッド draw() がありません。当然のことながら、次のように try catch ブロックに入れようとします。

try{
                bulls[i].draw();
            }catch(e){
                console.log("Error");
                console.log(bulls[i]);
                console.log(e.message);
            }

それでは、コンソールで bulls[i] を見て展開すると、次のように表示されます。

bullet {paper: Paper, setSize: function, isShot: function, isShotToTrue: function, lineRemove: function…}
draw: function (){
getCoords: function (){
isShot: function (){
isShotToTrue: function (){
lineRemove: function (){
paper: Paper
set: function (nx1, nx2, ny1, ny2){
setColor: function (r, g, b){
setSize: function (s){
setSpeedX: function (x1, coords){
update: function (){
__proto__: bullet

ご覧のとおり、bulls[i] の場合、draw が定義されていますが、定義されていないと主張していますか? 誰かが私のためにこの問題に光を当てることができますか? さらにコードや情報が必要な場合は、お問い合わせください。

編集:すべてのコードを JFiddle hereに配置しました。エラーを再現するには、person と入力してから、植物または動物の単語で ctrl+v をすばやく入力する必要があります。これは、画面上に 2 つの弾丸を表示しようとします。弾丸が画面上の単語のいずれかを殺すのを待ってから次の単語を入力する場合、1 つの弾丸で失敗することはありません。

クラスはすべて個別のファイルにあります。この場合は bullet.js で、次の方法でコンストラクターに追加されます。

this.draw = function(){
        lin = lin.draw();
        return this;   
}

他に必要な情報があれば喜んで提供します。

4

0 に答える 0