【问题标题】:Adding and Removing Elements (Using Tickers)添加和删​​除元素(使用代码)
【发布时间】:2021-07-01 02:21:49
【问题描述】:

我很难添加另一个带有代码的对象。我正在尝试使用 response() 函数让 eqn2(即 3+2=一些输入)向下移动。您可以在 response() 函数中看到警报“新问题”被正确调用到屏幕上。这里的目标是拥有m=2(之前位于1),以便调用drop(2) 将eqn2 向下移动。我认为问题在于股票代码没有回溯到足以识别obj[m].x = Math.random()*can.widthobj[m].y = 0.5。我不知道如何让它在这里工作,任何帮助将不胜感激。

<html>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="//code.createjs.com/createjs-2013.09.25.combined.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<!----------------------------- Start Game ------------------->

<style>
#gameCanvas {
  background-color: lightyellow;
}
</style>
<div class="canvasHolder1">
  <div id="eqn1"> 3+3=<input type="text" id="q1j" />
    </div>
  <div id="eqn2"> 3+2=<input type="text" id="q2j" />
    </div>
<button id="myBtn" onclick="response()">New Question</button>
  <canvas id="gameCanvas" width="600" height="600">Not supported</canvas>
<script type="text/javascript">
var m=1;
function response(){
alert("New Question");
document.getElementById(`eqn${m}`).remove();
m=m+1;
stage.update();
}
const quest=[];
quest[m]= document.getElementById(`q${m}j`);
quest[m].addEventListener("keyup", function(event) {
  if (event.keyCode === 13 ) {
   document.getElementById("myBtn").click();
   event.preventDefault();
  }
});
  const values = [];
  values[m] = document.getElementById(`q${m}j`);
  var stage = new createjs.Stage("gameCanvas");
  var obj=[];
  obj[m] = new createjs.DOMElement(document.getElementById(`eqn${m}`));
  can = document.getElementById("gameCanvas");
  obj[m].x = Math.random()*can.width;
  obj[m].y = 0.5;
function startGame() {       
    stage.addChild(obj[m]);
    createjs.Ticker.addEventListener("tick", handleTick);
    createjs.Ticker.setFPS(1);
    function handleTick(event){
    drop(m);
    stage.update();
    }
}
 function drop(i){
      obj[i].x += 1;
      obj[i].y +=3;
 }
</script>
<body onload="startGame();">
    <div >
  <canvas>This browser or document mode doesn't support canvas object.</canvas>
    </div>
</body>
</html>

【问题讨论】:

    标签: javascript html dom ticker


    【解决方案1】:

    这不是一个真正的股票问题。您必须在代码之前在响应函数中重新定义您需要的变量。

    <html>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script type="text/javascript" src="//code.createjs.com/createjs-2013.09.25.combined.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <!----------------------------- Start Game ------------------->
    
    <style>
    #gameCanvas {
      background-color: lightyellow;
    }
    </style>
    <div class="canvasHolder1">
      <div id="eqn1"> 3+3=<input type="text" id="q1j" />
        </div>
      <div id="eqn2"> 3+2=<input type="text" id="q2j" />
        </div>
      <div id="eqn3"> 5+2=<input type="text" id="q3j" />
        </div>
      <canvas id="gameCanvas" width="600" height="600">Not supported</canvas>
    <script type="text/javascript">
    var m=1;
    var quest=[];
    quest[m]= document.getElementById(`q${m}j`);
    
      var values = [];
      var stage = new createjs.Stage("gameCanvas");
      var obj=[];
      can = document.getElementById("gameCanvas");
    function response(){
        alert("New Question");
        document.getElementById(`eqn${m}`).remove();
        m=m+1;
        
        quest[m] = document.getElementById(`q${m}j`);
        quest[m].addEventListener("keyup", enterFunction);
        values[m] = document.getElementById(`q${m}j`);
        obj[m] = new createjs.DOMElement(document.getElementById(`eqn${m}`));
        obj[m].x = Math.random()*can.width;
        obj[m].y = 0.5;
        stage.addChild(obj[m]);
    }
    function startGame() {  
        quest[m].addEventListener("keyup", enterFunction);
        values[m] = document.getElementById(`q${m}j`);
        obj[m] = new createjs.DOMElement(document.getElementById(`eqn${m}`));
        obj[m].x = Math.random()*can.width;
        obj[m].y = 0.5;
        stage.addChild(obj[m]);
        createjs.Ticker.addEventListener("tick", handleTick);
        createjs.Ticker.setFPS(2);
        function handleTick(event){
        drop(m);
        stage.update();
        }
    }
     function drop(i){
          obj[i].x += 1;
          obj[i].y +=3;
     }
     function enterFunction(){
      if (event.keyCode === 13 ) {
       document.getElementById("myBtn").click();
       }
     }
    </script>
    <body onload="startGame();">
        <div >
      <canvas>This browser or document mode doesn't support canvas object.</canvas>
        </div>
    </body>
    <button id="myBtn" onclick="response()">New Question</button>
    </html>

    【讨论】:

    • 谢谢!现在这是有道理的。
    猜你喜欢
    • 1970-01-01
    • 2016-12-27
    • 2021-12-19
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 2019-03-23
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多