如何在javascript中使用数组克隆图像?

如何解决如何在javascript中使用数组克隆图像?

window.onload = function(){
const FPS = 60;
let ImgSize = 60;
let ImgX,ImgY;
let Counter = 0;
let ImgVeloX,ImgVeloY;
let canvas,context;
let newarrayXv=[];
let newarrayXspeed = [];

let newarrayYv=[];
let newarrayYspeed = [];
let X2b,Y2b;
let tryone = false;

canvas = document.getElementById("gameCanvas");
Imge = document.getElementById("Imge");
context = canvas.getContext("2d");

setInterval(update,1000/FPS);

ImgX = canvas.width/2;
ImgY = canvas.height/2;      

ImgVeloX = Math.floor(Math.random()*69+29)/FPS;
ImgVeloY = Math.floor(Math.random()*69+19)/FPS;

 
    // Making output not choose the same number twice.

if( Math.floor(Math.random()*2)==0){
    ImgVeloX = -ImgVeloX;
}
if( Math.floor(Math.random()*2)==0){
    ImgVeloY = -ImgVeloY;
}

function update(){

    ImgX += ImgVeloX;
    ImgY += ImgVeloY; 
    //New number to be assigned to the array for speed every cycle(Counter).           
    
    if(tryone === true){
               // Add tasks to do                 
            X2b = Math.floor(Math.random()*69+19)/FPS;
            Y2b = Math.floor(Math.random()*69+19)/FPS;

            newarrayXspeed[Counter] = X2b;
            newarrayYspeed[Counter] = Y2b;
            newarrayXspeed.push(newarrayXspeed[Counter]);
            
            newarrayYspeed.push(newarrayYspeed[Counter]);

            if( Math.floor(Math.random()*2)==0){
                newarrayXspeed[Counter] = -newarrayXspeed[Counter];
            }
            if( Math.floor(Math.random()*2)==0){
                newarrayYspeed[Counter] = -newarrayYspeed[Counter];
            }
            tryone = false;        
            
    
     
    } 
    

    //Bounce Method.

    if(ImgX - ImgSize / 2 < 0 && ImgVeloX < 0){
        ImgVeloX = -ImgVeloX;
       
        Counter++;
        newarrayXv[Counter] = ImgX;
        newarrayYv[Counter] = ImgY;
        tryone = true;    
        
    }
    if(ImgX + ImgSize / 2 > canvas.width && ImgVeloX > 0){
        ImgVeloX = -ImgVeloX; 
        Counter++; 
        newarrayXv[Counter] = ImgX;
        newarrayYv[Counter] = ImgY;
        tryone = true;
        
    }
     if(ImgY + ImgSize / 2 > canvas.height && ImgVeloY > 0){
        ImgVeloY = -ImgVeloY;  
        Counter++;
        newarrayYv[Counter] = ImgY;
        newarrayXv[Counter] = ImgX;
        tryone = true;
    }
    if(ImgY - ImgSize / 2 < 0 && ImgVeloY < 0){
        ImgVeloY = -ImgVeloY; 
           
        Counter++;
        newarrayYv[Counter] = ImgY;
        newarrayXv[Counter] = ImgX;
        tryone = true;
    }

    //array Bounce method.

    newarrayXv.forEach((item,index,arr)=> {
    newarrayXv[index] += newarrayXspeed[index];     
      
    if(item - ImgSize / 2 < 0 && newarrayXspeed[index] < 0){
        newarrayXspeed[index] =-newarrayXspeed[index];
    }
    if(item + ImgSize / 2 > canvas.width && newarrayXspeed[index] > 0){
        newarrayXspeed[index] =-newarrayXspeed[index];
    }
    
    });


    newarrayYv.forEach((item,arr)=> {
    newarrayYv[index] += newarrayYspeed[index];

        if(item - ImgSize / 2 < 0 && newarrayYspeed[index] < 0){
            newarrayYspeed[index] =-newarrayYspeed[index];
        }
        if(item + ImgSize / 2 > canvas.width && newarrayYspeed[index] > 0){
            newarrayYspeed[index] =-newarrayYspeed[index];
        }

 
    });

/*我想将图像推送/添加到 newarrayXblip 数组中。并且对于每个 newarrayXblip 应该有一个不同的 newarrayXv 和 newarrayYv。 请帮我克隆,以便 newarrayXblip 数组的 foreach 应包含一个 newarrayXv 和一个 newarrayYv,并且每个计数器都应具有与前一个不同的 newarrayXv 和 newarrayYv */

    const newarrayXblip = []; 
    newarrayXblip.push(new Image());        
    newarrayXblip.forEach((item,arr)=> {
    
    
    
        newarrayXblip[index].src = "dice/Dice.png";
        newarrayXblip[index].onload = function() {
            context.fillStyle = "blue";
            context.fillRect(0,canvas.width,canvas.height);
            console.log(newarrayXv[Counter]);
            context.drawImage(newarrayXblip[index],newarrayXv[item]-ImgSize/2,newarrayXv[item]-ImgSize/2);
        } 
    });   

}
 

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?