2017-08-21 1 views
0

私はClippy.JSを使用しています。これは、マイクロソフトのアシスタントを復活させる楽しい小さなJavascriptライブラリです。Clippy.JSのエージェントオブジェクトをロード機能の外に使用したい

は、私は、ウィザードマーリンを召喚したいと言う:

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"); 
}); 

これは動作し、実装が容易です。

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

エージェントオブジェクト

がこの範囲にinititalizedされていないと私はそれがロードされると、エージェントオブジェクトを取得する方法がわからない:私は周りのマーリンを移動したいときに問題が生じます。

コンソールは、このエラーを与える:

Uncaught ReferenceError: agent is not defined 
+0

エージェントはグローバル変数ではないため、 – epascarello

答えて

0

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); 
}); 
関連する問題