Accessibility
ホーム > 製品 > Director > サポート
Director アイコン Macromedia Director リリースノート
Multiuser Server 3.0 リリースノート

はじめに
Multiuser Server 3.0 リリースノートへようこそ。 ここでは、マニュアルには記載されていない Multiuser Server 3.0 の最新情報を取り上げます。

マニュアルの内容について
「Director 8.5 の新機能」の Multiuser Server の記述について

getUserCount サーバーコマンドでは、リストシンタックスを使用して、一度に 1 つ以上のサーバームービーに関する情報を取得できます。 シンタックスは次のとおりです。
gMultiUserInstance.SendNetMessage("system.movie.getUserCount",
任意の件名, ["Movie1", "Movie2"])
「Shockwave Multiuser Server でのサーバーサイドのスクリプト作成」の「サーバーサイドのスクリプトオブジェクトについて」では、例文の前に次の文があります。
"次のステートメントは、テキストファイルの "testScript.ls" から親スクリプトを作成します。"
この最初の文は、親スクリプトについて正しく記述していません。正しい文は、次のとおりです。
"次のステートメントは、テキストファイルの "testScript.ls" からグローバルスクリプトを作成します。"
「マルチユーザー Lingo 辞書」の、setBreakPoint() のエントリにある次の文は誤りです。
"ブレイクポイントを切り替えるには、new() (スレッド) コマンドを使用して作成されたスレッド内で実行中のハンドラに、ブレイクポイントが設定されている必要があります。ブレイクポイントは、サーバーのデフォルトのスレッドには設定できません。"
実際には、new() で作成されたスレッドのほかに、メインスレッドにもブレイクポイントを設定してデバッグできます。
次のシンタックスは、スクリプトオブジェクト内のブレイクポイントをすべてクリアします。
scriptObject.setBreakPoint(-1, -1, 0)
changeMovie コマンドがサーバーに追加されました。
このサーバーコマンドは、サーバーへの接続を維持したまま、ユーザーをムービー間で切り替えるために使用されます。 このコマンドでは、ユーザーが既存のムービーからログアウトするときに、すべてのグループを脱退し、実行時の属性を失うなど、通常のログオフと同じように動作します。 次にログオンするときは、"SomeMovieID" で指定した新しいムービーに、元の接続と同じユーザー ID、パスワード、および moviePath 情報を使用してログオンします。 これは、新しいムービーに切り替えるたびにサーバーへの接続を確立する必要がないため、ロビーアプリケーションを使いやすくするために作成されました。
changeMovie コマンドでは、次のシンタックスを使用します。
errCode =
gMultiuserInstance.sendNetMessage("System.User.ChangeMovie",
"任意の件名", "SomeMovieID")
sendNetMessage() コマンドには、オプションのプロパティリストのシンタックスを使用できます。 オプションのシンタックスは次のようになります。
gMultiuserInstance.sendNetMessage([#recipients:
ユーザー名またはグループ名, #subject: "件名の例", #content:
メッセージの内容])
getUserNames サーバーデータベースコマンドを、「マルチユーザー Lingo (機能別)」の「データベースコマンド」の項に追加してください。
新しいスレッドプロパティの runPeriodsleepPeriod を利用して、 スレッドのアクティビティを管理できます。 これらのプロパティで、指定したスレッドの CPU の使用時間とスリープ時間を定義できます。
runPeriod 値は、スリープ状態になるまでにスレッドが CPU を利用する時間を、ミリ秒単位で表します。 実行期間の期限切れは、スレッドが実際に Lingo を実行して CPU を使用している場合にのみ発生します。 アイドル状態のスレッドでは、実行期間の期限切れは発生しません。 ただし、この条件がほかのスレッドの実行に影響することはありません。 runPeriod のデフォルト値は 0 です。この場合、実行期間は無期限です。
runPeriod は、次のシンタックスで設定します。
aThreadReference.runPeriod = ミリ秒単位の時間
繝。繝「: abortCheckPeriod というプロパティが、Multiuser Server の Dispatcher.ls ファイルに追加されました。 このファイルには、abortCheckPeriod で指定した時間より長く実行されているスレッドをチェックするコードが含まれています。スレッドが abortCheckPeriod の値を超えている場合は、停止して #error の状態を返します。 これを避けるには、1 つのスレッドで実行されるコードを、abortCheckPeriod の値より短い時間で実行できるものに制限するか、 abortCheckPeriod の値を増やします。デフォルトは 5000 ミリ秒です。
sleepPeriod 値は、実行期間が経過したときにスレッドがスリープする時間を、ミリ秒単位で表します。 スリープ中のスレッドはコードを実行せず、CPU を使用しません。 コードの実行中に実行期間が経過した場合、スリープ期間が経過しても、コードの実行は再開されません。 同様にハンドラが中断された場合は、スレッドのスリープを中止したときに、これを再び呼び出す必要があります。 このため、各スレッドでは複数のタスクを実行すべきではありません。
repeat ループは、使用を避けるか短くするようにしてください。このループは CPU を完全に占有する唯一の Lingo コードで、ほかのスレッドを実行できなくなります。
sleepPeriod プロパティは、次のシンタックスで設定します。
aThreadReference.sleepPeriod = ミリ秒単位の時間
GlobalScripts.ls ファイルが、Multiuser Server の "Scripts" フォルダに追加されました。 クライアントムービーから実行したいハンドラをこのファイルに記述します。 これらのハンドラは、ムービーに関連付けられた特定のスクリプトファイルから呼び出すように、任意のムービーから呼び出すことができます。 また、ScriptMap.ls ファイルの globalScriptList 変数に追加することにより、独自のグローバルスクリプトファイルを追加することもできます。
scriptObjectList ハンドラが、ScriptMap.ls ファイルに追加されました。 子オブジェクトを作成するために使用する親スクリプトを用意している場合は、このリストに追加します。 Lingo を使用して、Dispatcher ファイルのfindScriptByNameハンドラを呼び出し、目的の親スクリプトへの参照を作成できます。
myRef = findScriptByName("MyParentScript")
続いて、new() 関数を、作成したスクリプト参照で使用します。
myChildObject = new(myRef)
Multiuser のマニュアルで説明した新しいデバッグ機能により、次の行は scriptmap.ls ファイルから削除してください。
-- theMap.append( [ #movieID: "Debug", #groupID: "@DebugGroup",
#scriptFileName: "Debug.ls" ] )
ChangeMovie シンタックス - recipient: System.User.ChangeMovie content: "SomeMovieID" このコマンドは、サーバーへの接続を維持したまま、ユーザーをムービー間で切り替えるために使用されます。 このコマンドでは、ユーザーが既存のムービーからログアウトするときに、すべてのグループを脱退し、実行時の属性を失うなど、通常のログオフと同じように動作します。次に新しいムービー "SomeMovieID" にログオンするときは、元の接続時と同じユーザー ID、パスワード、および moviePath 情報を使用します。 これは本来、ロビーアプリケーションを使いやすくするために作成されました。新しいムービーに切り替えるたびにサーバーへの接続を確立する必要はありません。

既に報告されている問題点


Multiuser

Dispatcher 以外の場所で createScript() で作成されたスクリプトは、デバッグ用に明示的に名前を付ける必要があります。 名前はファイル名から拡張子を除いたものにします。
Windows では、同じマシン上にあるクライアントとサーバー間で送信された 12K を超える UDP メッセージは受信されません。 クライアントはデータを送信し、エラーは返されませんが、サーバー側では受信されません。 メッセージは、Windows 内部の UDP パケット処理で切り捨てられます。
Lingo で、スレッドの sleepPeriod を設定するときに、実際の sleepPeriod が Lingo で渡される値を大きく超える場合があります。 thread.sleepsleepPeriod の代わりに明示的に呼び出すと、この問題を解決できます。

Macromedia Director チームへのバグの報告方法について
操作中に予期せぬ動作をしたり、解決できない問題が発生した場合は、まず Macromedia テクニカルサポートにご連絡ください。テクニカルサポートでは、お客様から寄せられる問題の解決をお手伝いし、ご報告いただいたバグを記録しています。また、Macromedia 製品へのリクエストとバグ報告のフォームもご利用いただけます。

繝。繝「: 製品へリクエストとバグ報告のフォームをご利用いただきお送りいただきましたメールに関してましては、すべてのお問い合わせに回答できるとは限りませんのであらかじめご了承ください。 弊社製品をご利用いただきありがとうございます。お客様からのフィードバックをお待ちしております。