組み込みのエディタ サービスを使用する

Stingray Editor には、プロジェクト データ、Stingray エンジン、オペレーティング システムの操作に役立つ関数を提供する、複数の JavaScript サービスが含まれています。Stingray Editor に組み込まれた標準機能のほとんどは、ユーザ インタフェースでユーザによって要求される編集タスクを実行するために、これらのサービスを利用しています。また、ユーザのカスタム プラグインでこれらと同じサービスを利用することができます。

標準サービス

JavaScript モジュール内のすべてのエディタの標準サービスは、editor/core/js/services にあります。たとえば、次のような特に便利な機能がいくつかあります。

さらに多くのサービスがあります。現在、オートデスクではこれらのサービスによって公開されるすべての関数の完全なリファレンスをまとめる作業を行っています。その間、プラグイン内で使用できる関数を見つける最適な方法は、ソース コード ファイルを参照することです。

サービスを使用するには

プラグインの JavaScript コードでサービスを使用するには、サービスの JavaScript モジュール 「インクルード」する必要があります。これは、require 関数の呼び出し、またはユーザ独自のモジュールを定義するために使用する define の呼び出しで実行します。

たとえば、次のカスタム アクションでは、require への呼び出しを使用します。require への最初のパラメータには、ホスト サービス モジュール(それが定義された JavaScript ファイル)がインクルードされています。2 番目のパラメータは、すぐに実行される関数です。この関数内で、ホスト サービスには、ユーザが関数のパラメータで割り当てた名前でアクセスできます。これは、プラグインの action 拡張機能に見つけることができるような、小さな定義済みのコード ブロック内で JavaScript リソースを使用できるようにするのに便利な方法です。

extensions = {
    actions = [
        {
            name = "launch-website"
            type = "js"
            script = """
                require(['services/host-service'], function (hostService) {
                    hostService.openUrl("http://www.stingrayengine.com");
                });
            """
        }
    ]
}

ユーザ独自の JavaScript モジュール定義する場合(たとえば、カスタム パネルが付属する .js ファイル内で)、上記の require 呼び出しとまったく同じ方法で、ユーザのモジュールの define 呼び出し内にサービスのモジュールをインクルードできます。このサービスは、ユーザのモジュールの範囲内でその名前によって使用できるようになります。したがって、次の例に示すように、そのモジュール内で作成した任意の関数で呼び出すことができます。

define(['services/host-service'], function (hostService) {
    "use strict";

    var exports = {}

    exports.openMyFavoriteUrl = function() {
        hostService.openUrl("http://www.stingrayengine.com")
    }

    return exports;
});

エディタ サービスによって提供される関数のほとんどは、非同期であることに注意してください。関数呼び出しからの戻り値を使用する必要がある場合は、then() メソッドを使用して、最初の関数が完了した後に、次のコードが評価されることを確認する必要があります。詳細については、「プラグインの開発に関するヒント」を参照してください。