从另一个javascript中调用函数

Calling functions from within another - javascript

本文关键字:调用 函数 javascript 另一个      更新时间:2023-09-26

我对javascript还比较陌生,有一些问题希望您能帮上忙。我正在利用织物库和画布来创建各种动画。

我有一个功能,当按下相关按钮时会调用:

//for starting the animation
startSim.onclick = function(){
    //obtain speed value from the control panel.
    var speed = 10000 / (new Number(speedControl.value));
    //stuff
    //animation process
        object.animate('top', '+='+canvas.height,{
            duration: speed,
            abort: function(){
                var returnedBool;
                //Pause is pressed, simulation pauses
                if(pause){
                 //stuff
                }
                //restart required
                if(restart){
                    //stuff
                }
                //option here to save data?
                return returnedBool;
            },//end abort callback
            onChange: canvas.renderAll.bind(canvas),
            onComplete: function(){
                //stuff
            }
        });//end animate callback
};

我想做的是在上面的动画处于活动状态时调用某些其他函数。

我知道我想如何使用Java或C++来实现这一点,但我似乎无法调用该函数。

我有一个显示面板,应该输出各种信息——随着动画的完成,变量会发生变化,我希望它们在屏幕上输出,并在变化时更新。

我用一个简单的功能进行测试:

    function updateInfoPanel(testSpeed){
    var test = document.getElementById('currentSpeed');
    test.innerHTML = test.innerHTML + testSpeed;
}

我想我需要在主动画循环中调用它,如果我在之前调用它,它很好,但显然只显示变量一次。有人能告诉我哪里出了问题吗?

我还有一个基本的碰撞检测功能,它可以工作,但不在动画循环中,我认为这些问题是有联系的。

非常感谢您的帮助。

为了节省空间,我删除了代码中不必要的部分。

所以我只是尝试使用一个函数作为onChange:的结果

onChange: function(){
                canvas.renderAll.bind(canvas);
                updateInfoPanel(speed);
            },

这不会出现语法错误,但动画不会一直运行,尽管速度变量在信息面板中更新得很快。:(

您需要调用renderAll(),bind实际上是返回一个用作处理程序的函数。试试这个代码:

onChange: function(){
                canvas.renderAll();//.bind(canvas);
                updateInfoPanel(speed);
            },

让我知道它是否有帮助?