好的,所以我试图用简单的动画创建一个简单的程序,该动画每2秒将交通灯的颜色从绿色变为红色,反之亦然,但是颜色没有改变。
我已经尝试调试代码,使应该使代码工作的布尔值打印出来,结果是正确的,但是颜色完全没有改变。试图更改的网格物体是称为bombilla的网格物体,它试图通过setInterval()每两秒钟调用一次的changeColor函数进行更改。
if(isset($_GET['id_fichier'])){
$id = $_GET['id_fichier'];
$stmt = $dbh->prepare("SELECT * from `fichier` where `id_fichier` = :id");
$stmt->bindColumn(':id', $id);
$stmt->execute();
$data = $stat->fetch();
$file = $data['fichier'];
$type = $data['type'];
header('Content-Type:'.$type);
echo($file);
}
答案 0 :(得分:1)
目前,您的代码有两个主要问题。
requesteAnimationFrame()
被注释,因此场景仅被渲染一次,并且永远不会被渲染,从而使任何动画或对场景的更改都不相关。
更明显的问题是在动画循环中使用setInterval
来控制何时更改材质颜色。您在每次更新帧时都在呼叫setInterval
。这意味着,两秒钟后,材质将在每次更新帧时交换颜色。
您需要做的是检测自上次更新以来是否已经过了两秒钟,然后才执行changeColor
函数。
// global scope
var clock = new THREE.Clock(); //automatically starts clock
// update function
var update = function() {
var time = clock.getElapsedTime(); // elapsed time since last reset
if ( time > 2 ) {
changeColor();
clock.start(); // resets clock
}
};