想要使用Clippy.JS'代理对象在加载函数之外

时间:2017-08-21 13:29:20

标签: javascript clippy

我正在使用Clippy.JS,这是一个有趣的小Javascript库,可以恢复微软的助手。

说我想召唤精灵Merlin:

clippy.load('Merlin', function(agent){
    // do anything with the loaded agent
    agent.show();
    agent.moveTo(100,100);
    agent.speak("Arthur, you are the chosen one to slay the dragon");
});

这很有效并且易于实现。当我想要移动Merlin时会出现问题:

$( "#target" ).click(function() {
     agent.moveTo(333,333);
}); 

代理对象未在此范围内初始化,我不知道如何在加载代理对象后检索它。

控制台出现此错误:

Uncaught ReferenceError: agent is not defined 

1 个答案:

答案 0 :(得分:1)

agent不是全局变量,仅在代理回调函数中可用。

要解决此问题,您需要在回调函数之外创建一个变量,然后使用它来全局操作代理。

以下情况应该有效。

//define the personal agent outside the callback function
let merlin;

clippy.load('Merlin', function(agent){
    merlin = agent;
    merlin.show();
    merlin.moveTo(100,100);
    merlin.speak("Arthur, you are the chosen one to slay the dragon");
});

$( "#target" ).click(function() {
     merlin.moveTo(333,333);
});