7

Google Wave ガジェットで wave.getState() を呼び出そうとすると、null (状態オブジェクトなし) が返されます。Wave 状態オブジェクトを初期化するにはどうすればよいですか? 私は Wave Sandbox で作業しています。

私の ModulePrefs には以下が含まれています。

    <Require feature="wave" />
    <Require feature="rpc"/>

修正を検索しているときに、いくつかの Google グループの投稿から "rpc" 機能を取得しましたが、何の助けにもならないようです。

ガジェットには jQuery プラグインが含まれています。このプラグインは、使用するクラス (表示されていません) を定義し、編集モードで表示されるリンクにイベント ハンドラーをアタッチし、Google Wave ガジェット初期化子を使用してコールバック メソッドを設定します。

$.fn.extend({
     $.gork.InitPass.newButtonClick = function newButtonClick() {
           var jer = new $.gork.InitPass.Player('Jeremias', 12, 2);
           var delta = {};
           delta[jer.name] = jer.serialize();
           wave.getState().submitDelta(delta);
     };

    $.gork.InitPass.modeCallback = function modeCallback() {
           var state = wave.getState();
           var mode = wave.getMode();
           $.gork.InitPass.getContainer().ipCombatState(state, (mode == wave.Mode.EDIT));
    };

    $.gork.InitPass.stateCallback = function stateCallback() {
      $.gork.InitPass.getContainer().ipCombatState(
      wave.getState(), (wave.getMode() == wave.Mode.EDIT));
      alert('state');
    };

    $.gork.InitPass.init = function init() {
     if (wave && wave.isInWaveContainer()) {
       var mode = wave.getMode();
       $('.gork-ip-container').ipCombatState(null, (mode == wave.Mode.EDIT));

       wave.setModeCallback($.gork.InitPass.modeCallback);
       wave.setStateCallback($.gork.InitPass.stateCallback);
     }
    };
})(jQuery);
gadgets.util.registerOnLoadHandler($.gork.InitPass.init);

 $(function ready() {
  $.gork.InitPass.getContainer().find('.gork-ip-edit .addSection a.newButton').click(
   $.gork.InitPass.newButtonClick);
 });

したがって、ここには 2 つの主な機能があります。

  • モードが変わると、ipCombatState(...) が呼び出されます。これにより、ユーザーがガジェットを編集モード (CTRL+E) にすると、ビュー DIV が非表示になり、編集 DIV が表示されるため、ガジェットの外観が変更されます。
  • newButtonClick コールバック (編集コンテナー内のリンク "a.newButton" に関連付けられている) は、ジェレミア (ネイトのシャドウラン キャラクター) をガジェットの状態に追加して、編集モードで表の行として表示されるようにすることになっています。

初期化メソッドが呼び出され、表示/編集モードの切り替えが正常に機能することを確認しました (状態が null であることを除く)。新しいボタンのリンク (編集モードでは一番下のリンク) をクリックして、newButtonClick ハンドラーをトリガーすると、wave.getState() も null を返すため、エラーが発生します。

ウェーブ状態を初期化して作業できるようにするにはどうすればよいですか?

私のガジェットの目的は、Shadowrun テーブルトップ ゲーム (第 4 版) で戦闘のイニシアチブの順序を追跡することです。Wave でテストして、これまでの内容を確認できます。

http://gorkwobble.herobo.com/wave/init-pass.xml

実際の JavaScript コードは次のように外部化されます。

http://gorkwobble.herobo.com/wave/init-pass.js

PS もし Shadowrun プレイヤーがこれを読んで、私がガジェットを動かしたときにそれについて聞きたいと思ったら、コメントを残してください。手を振ってあげます。

4

0 に答える 0