【问题标题】:One variable for two function in JSJS中两个函数的一个变量
【发布时间】:2014-04-03 15:12:03
【问题描述】:

我开发了一个小游戏,我在游戏开始时就去了,重力是-40,但是之后如果玩家想改变它,他可以。

我有这个表格:

<form>
     <input type="text" id="userInput" />
     <input type="submit" onclick="otherG();" />
</form>

我的重心是:

function initScene() {
   blablabla
   scene.setGravity(new THREE.Vector3(0, -40, 0));
   blablabla
}

如何通过用户输入改变-40,并允许场景(无需f5)?

当用户想要通过按键改变重力时,表单会出现。

PS:我正在使用 three.js 和 physijs。

【问题讨论】:

  • 提交正在刷新页面。在函数末尾添加return false以防止这种情况发生。
  • 问题似乎是关于如何在代码中使用用户输入。创建一个变量并将其设置为用户输入的值。在你的代码中使用这个变量。
  • 但不是scene.setGravity(new THREE.Vector3(0, someNewValue, 0)); ?
  • 是的,但是在 intscene() 中我有很多东西,比如画车、地面......
  • 不是scene 全局变量吗?

标签: javascript forms function input


【解决方案1】:

可能是这样的

HTML:

<form onsubmit="return otherG();">
   <input type="text" id="userInput" />
   <input type="submit" value="Change Gravity" />
</form>

Javascript:

var gravity = -40; // default value
var doc = document;

function otherG() {
    gravity = doc.getElementById("userInput").value;
    updateScene();
    return false;
}

function updateScene() {
  blablabla
  scene.setGravity(new THREE.Vector3(0, gravity, 0));
  blablabla
}

【讨论】:

  • 需要更改 onclick="otherG"();" ?
  • 好的,updateScene 和 initScene 是不是一样的功能?因为 initScen 绘制所有,但更新场景对新重力做同样的事情?
  • 当我设置新的重力时,游戏冻结,我用-40初始化,如果想要chnage,表单调用setnewgravity,然后输入5,然后冻结
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2013-11-13
  • 2016-06-08
  • 2017-09-09
  • 1970-01-01
相关资源
最近更新 更多