約 2,640,537 件
https://w.atwiki.jp/exedit/pages/37.html
設定ダイアログ 数値の入力方法トラックバー 数値をドラッグ キーボード入力 移動方法の個別選択 数値の一括変更複数選択で変更 一定の数値にそろえる小ワザ 合成モード 参照ファイル 色選択ダイアログ オブジェクト種類の変更 ルーラー 設定の保存初期値の設定 エイリアスの作成 その他 設定ダイアログ ○設定ダイアログ オブジェクトの追加やオブジェクト自体をダブルクリックすることで 設定ダイアログが表示されます。表示中にダブルクリックで閉じることも出来ます。 ① カメラボタン カメラ制御の対象とするかどうかを指定 ② 上のオブジェクトでクリッピング 「上のオブジェクトでクリッピング」を適用するかどうかを指定 ③ 折りたたみ 設定ダイアログを折りたたみます ④ マウスマーク 一部のフィルタ効果のアウトライン表示(破線)をON/OFFします ⑤ 矢印マーク 入出力を変更します。オブジェクトの種類を変更する時に使用 ⑥ +マーク フィルタ効果を追加します ⑦ 表示/非表示 オブジェクトの表示/非表示を切り替えます (カスタムオブジェクトの「多角形」の場合) 上へ 数値の入力方法 トラックバー横の数値の部分は直接入力できます。数値部分をドラッグすることで 値を変更することも出来ます。Shiftキーを押しながらドラッグすると細かく変更出来ます。 数値の直接入力やドラッグでの変更はトラックバーより大きな範囲で変更出来る項目があります。 トラックバー トラックバーで数値を調整します。 ただ、トラックバーでは、一定の値で上限と下限が設定されています。それ以上の数値を設定したい場合は、数値をドラッグしたり、キーボードで入力する必要があります。 数値をドラッグ 数値をドラッグして調整します。 1の位の単位で数値を調整することが出来ます。また、Shiftを押しながらドラッグすると、小数点以下の数値も調整することが出来ます。 キーボード入力 数値を選択した状態だと、キーボードでも入力できます。 上へ 移動方法の個別選択 トラックバーの名前の部分をクリックするとトラックバーの値の変化方法を 指定することが出来ます。X,Y座標等の関連がある項目は連動して変更されます。 Shiftキーを押しながらだと個別にも変更出来ます。 設定ダイアログのうち、例えばX座標の移動方法を選択すると、同時にY座標の移動の種類も同じように設定されるものと思います。 ここで、X座標の移動方法を、Shiftを押しながら選択すると、X座標のみを変更することが出来ます。 他には例えば、X座標は直線移動、Y座標は反復移動()、といったようにも設定できます。 上へ 数値の一括変更 複数のオブジェクトを選択した状態でトラックバー(数値入力、変化方法も含みます) チェックボックス、フィルタ効果の有効/無効を変更すると選択オブジェクトの全てに反映します。 複数選択で変更 オブジェクトを複数選択した状態で、トラックバーの数値やチェックボックスを一括して変更することが出来ます。 ただし、複数選択の状態で、トラックバー横の数値を直接ドラッグして調整すると、選択状態が解除されてしまうことに注意。 一定の数値にそろえる小ワザ 複数のオブジェクトの特定の項目を、一定の数値にそろえたい場合には、 ①一つのオブジェクトのみを変更したい数値に設定。 ②変更したオブジェクトの設定ダイアログを表示した状態で、変更したいオブジェクト全てを複数選択。 ③Ctrlを押したまま、先程の設定ダイアログのトラックバー横の▲ボタンを押し、数値を一度だけ動かし、すぐに元に戻す。 すると複数のオブジェクトの数値を変更することが出来ます。 (Y軸の値をそろえるケース) 上へ 合成モード 合成モードで解説 上へ 参照ファイル ◇参照ファイル 読み込むBMPファイルを指定します。 BMPファイルを設定ダイアログにD Dすることでも変更できます。 参照ファイルからファイルを選択して画像などを読み込みます。 設定ダイアログにD Dすることで、画像などを差替えることも出来ます。 また、キーボードのF5でファイルを再読み込みします(キャッシュの破棄)。 例えば、画像編集ソフトなどで画像を修正した場合に、最新の情報に更新します。 上へ 色選択ダイアログ ○色選択ダイアログ テキストや図形等の色の選択時に色選択のダイアログが表示されます。 左側のパレットをクリックすると即座に色が選択出来ます。 RGB値を数値で指定したり右側のカラーサークル等で色を決めてから OKボタンで決定することも出来ます。スポイトボタンは他のウィンドウの 色を取得することが出来ます。 スポイトはAviUtlメイン画面だけでなく、再生ウィンドウやデスクトップ等のPC画面上の色を取得することができます。 また、パレットは、デフォルトで色が設定されていますが、 パレットの部分で右クリック→現在の色をプリセットに保存、を選択すると、任意の色を登録することが出来ます。 よく使う色を保存するとよいかもしれません。パレットは、他オブジェクトの色選択ダイアログと共有です。 上へ オブジェクト種類の変更 設定ダイアログ右上の矢印ボタンから、他のオブジェクトに変更することが出来ます。 標準描画から拡張描画に変更することが多いと思いますが、画像→図形・テキストなど、他のオブジェクトに変更することも出来ます。 例えば、テキストをパーティクル出力させることもできます。 フィルタだけでなく、各種設定値も引き継がれるので、役に立つ場面があるかもしれません。 上へ ルーラー 設定ダイアログの上部のルーラーや移動ボタンで表示フレームと選択区間を移動でき 右クリックメニューから下記を操作が出来ます。 ◇現在位置に中間点を追加 現在の表示位置に中間点を追加します。 ◇選択区間の長さ変更 現在の選択区間の長さを指定します。 ○中間点を時間で均等配置 中間点を時間で均等に配置しなおします。 中間点の追加、均等配置はレイヤー上のオブジェクトで右クリックしても選択可能です→オブジェクト参照。 一方、選択区間の長さ変更は、設定ダイアログからのみ選択できます。 中間点で区切られた区間を選択し、その区間のみの長さを時間orフレーム数で変更します。 上へ 設定の保存 →各種設定の比較は、オブジェクト設定の保存まとめ参照。 初期値の設定 右クリックメニューから下記の操作が出来ます。 ◇設定の初期化 設定を初期化します。 ◇現在の設定を初期値にする 現在の設定を作成時の初期値にします。 設定ファイル(.exc)がプラグインと同じフォルダに作成されます。 「現在の設定を初期値にする」を選択すると、現在のオブジェクト設定(座標や拡大率などの項目)が初期値となります。 次回、同じ種類のオブジェクトを作成すると、同じ設定で作成されるようになります。 また、登録後、設定ダイアログで右クリック→設定の初期化、を選択すると、登録しておいた初期値に戻すことが出来ます。 なお、登録した初期値を削除したい場合は、AviUtlフォルダから直接「.exc」ファイル を削除する必要があります。 エイリアスの作成 ◇現在の設定でエイリアスを作成する 現在の設定で別名のオブジェクトやフィルタ効果の追加メニューを作成します。 格納フォルダを指定すると階層メニューを作成できます。 エイリアス設定ファイル(.exa)がプラグインと同じフォルダに作成されますので 削除や階層の移動をしたい場合は直接ファイルを操作してください。 拡張編集を右クリックした際のメニューに、新たに項目を追加します。 設定ダイアログで右クリック→設定の保存→現在の設定でエイリアス を作成する、と選択し、 エイリアス名(項目名)を入力すると追加することが出来ます。 また、「格納フォルダ」を指定すると、自動的にフォルダが作成され、その中にexaファイル が保存されます。 設定ダイアログの設定値や、フィルタ効果などの設定が保存されます。 上へ その他 設定ダイアログが表示している状態でTabキー(標準設定)を押すと現在のフレーム上にあるオブジェクトに 移動します。既に選択されている場合はその下のレイヤーのオブジェクトに移動します。 Shiftキーを押しながらだと逆方向に移動します。 上へ
https://w.atwiki.jp/mari8dotnet/pages/42.html
□Tipsデータベース≫ダイアログ ColorDialog FolderBrowserDialog FontDialog OpenFileDialog SaveFileDialog
https://w.atwiki.jp/isoroku_be/pages/72.html
情報 作者名:fuji/ムラり 引用元:なでしこプログラム掲示板「ダイアログエディタ」 概要 ムラりさんのダイアログエディタをなでしこに移植しました。 ●MessageBox の様々なダイアログのソースを確認しながら出力することができます。 解説 //本体 #ダイアログエディタ !母艦設計=『母艦の可視はオフ』 母艦について 背景色はウィンドウ背景色。//RGB(128,128,255) タイトルは「APIダイアログエディタ 1.28」 サイズは「60,20,600,555」 スタイルは「枠固定」 オフに最大化ボタン有効変更 部品間隔=8 文字サイズ=10 ボタンリストは「[OK] [OK][キャンセル] [中止][再試行][無視] [はい][いいえ][キャンセル] [はい][いいえ] [再試行][取り消し]」 OSで条件分岐。 「Windows Me」ならば、ボタンリストは、ボタンリスト 「{~}[キャンセル][再実行][続行]」 「Windows 2000」ならば、ボタンリストは、ボタンリスト 「{~}[キャンセル][再実行][続行]」 「Windows XP」ならば、ボタンリストは、ボタンリスト 「{~}[キャンセル][再実行][続行]」 リセット部品リストは「ボタンラジオ{~}アイコンラジオ{~}デフォルトラジオ 母艦チェック{~}ヘルプボタン{~}手前{~}逆チェック」 ボタンラジオとはラジオ。 ボタンラジオについて 位置は「10,10」 幅は250。 高さは290。 アイテムはボタンリスト。 値は0。 クリックした時は もし、(OS!=『Windows XP』)かつ((ボタンラジオの、値)=6)ならば 母艦チェックの値はオフ。 アイコンラジオとはラジオ。 アイコンラジオについて 位置は(ボタンラジオの右側) 幅は140。 高さは190。 アイテムは「なし [×]アイコン [?]アイコン [!]アイコン [i]アイコン」 値は、0。 デフォルトラジオとはラジオ。 デフォルトラジオについて 位置は(アイコンラジオの下側) 幅は240。 高さは190。 アイテムは「一番目のボタンがデフォルト 二番目のボタンがデフォルト 三番目のボタンがデフォルト 四番目のボタンがデフォルト」 値は0。 ヘルプボタンとはチェック。 ヘルプボタンについて テキストは「ヘルプを追加(無意味)」 位置は(ボタンラジオの下側) 幅は200 手前とはチェック。 手前について テキストは「常に手前に表示」 位置は(ヘルプボタンの下側) 幅は130 母艦チェックとはチェック。 母艦チェックについて テキストは「母艦をクリックできなくする」 位置は(手前の下側) 幅は250 クリックした時は もし、OSが『Windows XP』でなければ、 もし、(母艦チェックの値)がオンならば、 もし、(ボタンラジオの値)が6ならば、ボタンラジオの値は0。 逆チェックとはチェック。 逆チェックについて テキストは「ダイアログを逆にする」 位置は(母艦チェックの下側) 幅は250。 実行ボタンとはボタン。 実行ボタンについて テキストは「作 成」 位置は(アイコンラジオの右側) 幅は97 高さは60 クリックした時は~コード作成。 リセットボタンとはボタン。 リセットボタンについて 位置は(実行ボタンの下側) 幅は97 高さは35 クリックした時は リセット部品リストを反復 「{それ}の値は0」をナデシコする。 「ダテエディタ{~}ダタエディタ」を反復 (対象 『のテキストは「」』)をナデシコする。 プレビューボタンとはボタン。 プレビューボタンについて 位置は(リセットボタンの下側) 幅は97 高さは35 クリックした時は 最終コード取得。 「MessageBox((母艦の、ハンドル),ダテエディタ,ダタエディタ,${最終コード})。{選択肢}」をナデシコする。 使い方ボタンとはボタン。 使い方ボタンについて テキストは「使い方」 位置は(プレビューボタンの下側) 幅は97 高さは40 クリックした時は~ヘルプ表示。 ダイアログタイトルラベルとはラベル。 ダイアログタイトルラベルについて フォントサイズは10 位置は(逆チェックの下側) ダタエディタとはエディタ ダタエディタについて 位置は(ダイアログタイトルラベルの右側) Xは150 幅は360 フォントサイズは10 IMEは「IMEオン」 そのキー押した時は もし、ダタエディタの押された仮想キー=13/*ENTER*/ならば、ダテエディタに注目 ダイアログテキストラベルとはラベル。 ダイアログテキストラベルについて フォントサイズは10 位置は(ダイアログタイトルラベルの下側) ダテエディタとはメモ。 ダテエディタについて 位置は(ダイアログテキストラベルの右側) Xは150 幅は360 高さは66 フォントサイズは10 IMEは「IMEオン」 母艦の可視はオン。 待機。 ●ヘルプ表示 「」を「オンラインヘルプ{~}このプログラムについて{~}アイコンについて{~}デフォルトとは」でボタン選択。 条件分岐。 「オンラインヘルプ」ならば、「http //www.realintegrity.net/~fuji/jprogram/nadesiko/dialog.html」を起動。 「このプログラムについて」ならば、プログラムの内容。 「アイコンについて」ならば、アイコンの意味。 「デフォルトとは」ならば、デフォルトの意味。 ●プログラムの内容 「このプログラムでは」と言う。 MessageBox((母艦の、ハンドル),「Version 1.00」,「(サンプルメッセージ)」,$40)。 MessageBox((母艦の、ハンドル),「文章が変更されています。保存しますか?」, 「(サンプルメッセージ)」,$23)。 「のような特殊なダイアログを表示するためのソースを生成できます。」と言う。 「基本的な使い方: タイトルとテキストを入力して、アイコンを選び、プレビューボタンを押すと、 どんなダイアログが出るか見ることができます。 作成ボタンを押すと、そのダイアログを出すためのソースを貼り付けられます。 このとき、APIを貼り付けるかと出ますが、APIはプログラム中に一つ貼っておけば十分です。 また、APIはプログラムのどこにあってもかまいません。」と言う。 ●アイコンの意味 「アイコンには[×][?][!][i]の4つがあります。」と言う。 MessageBox((母艦の、ハンドル),「エラーが発生しました。 ([×]アイコンはエラーなど、プログラムに問題が発生した時に使います。)」,「(サンプルメッセージ)」,$10)。 MessageBox((母艦の、ハンドル),「文章が変更されています。保存しますか? ([?]アイコンはユーザーにたずねる時に使います。)」,「(サンプルメッセージ)」,$23)。 MessageBox((母艦の、ハンドル),「同名のファイルが存在します。上書きしますか? ([!]アイコンはユーザーに警告する時に使います。)」,「(サンプルメッセージ)」,$30)。 MessageBox((母艦の、ハンドル),「Version 1.00 ([i]アイコンは情報を表示する時に使います。)」,「(サンプルメッセージ)」,$40)。 ●デフォルトの意味 「デフォルトというのは、フォーカスをどこに合わせるか、と言うものです。 たとえば{[}テキストが変更されています。保存しますか。{]}というのを [はい][いいえ][キャンセル]で尋ねる時、保存するのがいいだろうと言うことなら、 1番目([はい])にデフォルトを、終了を留まらせるのがいいだろうと言うことなら、 3番目([キャンセル])にデフォルトを合わせます。 実際に見てみましょう」と言う。 MessageBox((母艦の、ハンドル),「テキストが変更されています。保存しますか。 (1番目にデフォルト)」,「(サンプルメッセージ)」,$33)。 MessageBox((母艦の、ハンドル),「テキストが変更されています。保存しますか。 (3番目にデフォルト)」,「(サンプルメッセージ)」,$233)。 ●MessageBox(h,t,c,u) =DLL("user32.dll", "int MessageBoxA( HWND hWnd, // handle of owner window LPCTSTR lpText, // address of text in message box LPCTSTR lpCaption, // address of title of message box UINT uType // style of message box )")#" ●コード作成 /*戻ってくる値 0エラー1OK 2キャンセル3中止 4再試行5無視 6はい7いいえ 10再実行11続行*/ 最終コード取得。 「メッセージボックスのAPI(●MessageBox(h,t,c,u))も貼り付けますか? これはソース中に一つあれば十分です。」と二択。 もし、それがはいならば APIは改行 『●MessageBox(h,t,c,u) =DLL("user32.dll", "int MessageBoxA( HWND hWnd, // handle of owner window LPCTSTR lpText, // address of text in message box LPCTSTR lpCaption, // address of title of message box UINT uType // style of message box )")#" 』 違えば、APIは「」 ダタエディタの`「`を『{「}』に置換して`」`を『{」}』に置換してタイトルに代入。 ダテエディタの`「`を『{「}』に置換して `」`を『{」}』に置換してダイアログテキストに代入。 最終ソース=「MessageBox((母艦の、ハンドル),{[}{ダイアログテキスト}{]},{[}{タイトル}{]},${最終コード})。{選択肢}」 最終ソース APIをコピー。 デバッグエディタハンドルに『paste』をCOPYDATA送信。 戻る。 ●最終コード取得 最終コードはボタンラジオの値。 最終コードで条件分岐。 0ならば、選択肢は「」 1ならば、選択肢は改行 『もし、それが1/*OK*/ならば、「はいが押されました」と、言う。』 改行 『もし、それが2/*キャンセル*/ならば、「キャンセルが押されました」と、言う。』 2ならば、選択肢は改行 『もし、それが3/*中止*/ならば、「中止が押されました」と、言う。』 改行 『もし、それが4/*再試行*/ならば、「再試行が押されました」と、言う。』 改行 『もし、それが5/*無視*/ならば、「無視が押されました」と、言う。』 3ならば、選択肢は改行 『もし、それが6/*はい*/ならば、「はいが押されました」と、言う。』 改行 『もし、それが7/*いいえ*/ならば、「いいえが押されました」と、言う。』 改行 『もし、それが2/*キャンセル*/ならば、「キャンセルが押されました」と、言う。』 4ならば、選択肢は改行 『もし、それが6/*はい*/ならば、「はいが押されました」と、言う。』 改行 『もし、それが7/*いいえ*/ならば、「いいえが押されました」と、言う。』 5ならば、選択肢は改行 『もし、それが4/*再試行*/ならば、「再試行が押されました」と、言う。』 改行 『もし、それが2/*取り消し*/ならば、「取り消しが押されました」と、言う。』 6ならば、選択肢は改行 『もし、それが2/*キャンセル*/ならば、「キャンセルが押されました」と、言う。』 改行 『もし、それが10/*再実行*/ならば、「再実行が押されました」と、言う。』 改行 『もし、それが11/*続行*/ならば、「続行が押されました」と、言う。』 違えば、選択肢は「」 それはアイコンラジオの値。 最終コード=最終コード+それ*10。 それはデフォルトラジオの値。 最終コード=最終コード+それ*100 それは手前の値。 最終コード=最終コード+それ*40000。 それはヘルプボタンの値。 最終コード=最終コード+それ*4000。 それは母艦チェックの値。 最終コード=最終コード+それ*2000。 それは逆チェックの値。 最終コード=最終コード+それ*100000。 戻る。 名前 コメント
https://w.atwiki.jp/isoroku_be/pages/48.html
情報 作者名:はっぱ 引用元:なでしこプログラム掲示板「はっぱのサンプル集57」 概要 発言ダイアログです。 解説 引数 コメント:発言内容 返り値 なし 本体 //発言ダイアログ 発言フォームとはフォーム そのサイズ=『200,200,500,350』 そのタイトル=『発言』 //フォーム(母艦も含む)の閉じるボタンも含めて、全部消すなら オフに発言フォームのシステムメニューボタン有効変更 //もとに戻すときは「オンに発言フォームのシステムメニューボタン有効変更」 //ちなみに閉じるボタンを残したいなら「そのスタイルはダイアログスタイル」でOK 発言フォームの表示した時は~ 発言フォームを中央移動 発言ラベルとはラベル その親部品=発言フォーム その文字サイズ=20 その位置=『20,20』 そのテキスト=空 発言閉ボタンとはボタン その親部品=発言フォーム その位置=『200,75』 そのテキスト=『OK』 そのクリックした時は~ 発言フォームを閉じる ●発言する(コメントと) 発言ラベルのテキスト=コメント 発言ラベルの文字色=RGB(200の乱数,200の乱数,200の乱数) 発言フォームをモーダル表示 //サンプルプログラム 「こんにちは」と発言する 「あ~」と発言する 「さようなら」と発言する 名前 コメント
https://w.atwiki.jp/api_programming/pages/25.html
// //処理:ダイアログを表示します。 // AlertDialog.Builder alertDialog=new AlertDialog.Builder(MainActivity.this); //タイトルを設定する alertDialog.setTitle("タイトルです"); //メッセージ内容を設定する alertDialog.setMessage("メッセージ内容です"); //確認ボタンん処理を設定する alertDialog.setPositiveButton("OK",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int whichButton) { setResult(RESULT_OK); } }); alertDialog.create(); alertDialog.show();
https://w.atwiki.jp/memo_android/pages/26.html
確認ダイアログ表示 //メッセージとボタン設定 dialog.setTitle("確認"); dialog.setMessage("アプリを終了しますか?"); //OKボタン設置 dialog.setPositiveButton("はい", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); return ; } }); //キャンセルボタン設置 dialog.setNegativeButton("キャンセル", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { return; } }); dialog.setCancelable(true); dialog.show();
https://w.atwiki.jp/mizcremorne/pages/281.html
はじめに ダイアログllDialog関数 ダイアログ対応版照明スクリプト リストを使いこなすllListFindList関数 今回のポイント はじめに 照明スクリプトだけで三回にも及んでしまいました(^^; ですが、照明スクリプト一回目の「ユーザー関数」、二回目の「listen」、そして今回の「ダイアログ」はlslの中でも使用頻度の高いものばかりですので、ぜひとも使い方をマスターしていただきたい部分です。 この回から初めて見たという方は、第六回の「照明を作ろう」から戻ってお読みいただくのが良いかと思います。 照明のスクリプト作成について順を追って解説しております。 さすがに照明スクリプトがこれだけ続くと、いいかげん目がチカチカして来そうですw 今回は頑張って完成まで行き着きたいと思います。さて照明スクリプトですが、前回までで、チャットで色名を発言することで照明の色が変化するところまで出来ています。 照明としての機能はすでに実装済みですが、いちいちチャットで色名を入力するのが手間だという問題が残っています。 今回は「ダイアログ」を使うことで、より容易に色の変更が可能な照明を作り、一応の完成としたいと思います。 ダイアログ ダイアログとは、確認メッセージの表示や簡単な入力などに使われる小さなウィンドウのことです。 SLでもいろいろなところで使われていますので見たことがある人も多いかと思いますが、画面の右上に出てくる青いウインドウですね。 いくつかのボタンが表示されていて、それを押すことで操作します。 Snapshot_115.jpg 複数の選択肢の中から一つを選ぶ操作には、ダイアログが最適です。 ダイアログウインドウに選択可能な色名を表示し、好みの色を押すと照明の光がその色になるようにすれば、非常に容易なオペレーションになるでしょう。 さっそく見ていきましょう。 まずはダイアログを表示する命令からです。 llDialog関数 llDialog(key id, string message, list buttons, integer chat_channel); これまた複雑そうな命令です・・・。 引数が4つありますが、順番に説明していきましょう。 key id ダイアログを表示するアバターのUUIDを指定します。 UUIDというのは、前回も出てきましたが、SL内の全てのものに割り振られているユニークなIDのことです。 ダイアログはここに指定したUUIDを持つアバターの画面に表示されます。 つまり、照明を操作している人のUUIDを指定すればいいわけですね。 string message ダイアログに表示するメッセージです。 「Yes or No?」とか「select color」とか、ダイアログが何のために表示されているのか理解できるようにするためのメッセージです。 日本語も使えたような気がしますが(ちょっと未確認です、すみません(^^;)、特殊な場合を除いては英文を使うべきでしょう。 string型ですので""で囲みます。 list buttons ダイアログに表示するボタンのデータです。 list型は初めて登場する型ですね。 こんなふうに書きます。 ["red", "green", "blue", "off"] []の中に、文字列を,で区切って並べています。 データが複数並んでいますので、list型と言います。 今回はボタンの名前のリストなのでstring型(文字列)ですが、list型には文字列以外のデータを入れることもできます。 [1, 3, 5, 7, 9] [1, "one", 2, "two"] ["home", 10.0, 43.0, 11.0 , "shop", 40.0, 12.0, 200.0 ] 上記のような書き方はどれも有効です。 用途に応じて様々な型のデータを格納することができますので、まとまった一連のデータを管理する際にはlist型はとても便利です。 なお、今回使うのはstring型のデータを並べたlistです。 並べた文字列が、ボタンの名前として表示されます。 ボタンの名前にはstring型しか使えません。他の型を並べるとエラーになりますので注意しましょう。 lslのダイアログでは、ボタンの数は12個までになっていますので、最大12個まで並べて書くことができます。 以下のような空白のボタン名はエラーになります(↓3番目が空白)。 ["red", "green", "", "off"] また、ボタン名の最大長は24文字です。 ですが24文字以下でも、あまり長いボタン名だと後半が表示されないので注意しましょう。 ["changing color to red", "green", "blue", "off"] 上の例だと、最初のボタンは"changing..."あたりで切れるので、何色に変えるかわからなくなります。 integer chat_channel ダイアログのボタンを押したときに、選択結果を送信するチャットチャンネルを指定します。 チャットチャンネルは前回も出てきました。 ダイアログは、ボタンを押すとそのボタンの名前をチャットで発言するようになっています。 例えば、"red"というボタンを押すと、チャットで"red"と発言されます。 もしもダイアログのチャンネルを0(通常チャットのチャンネル)にすると、ボタンを押すたびにチャットにログが流れることになり、わかりやすい反面、うっとおしくなります。 ですので一般的にはこのチャンネルは0以外に設定します。 前回は触れませんでしたが、実はチャットのチャンネルにはマイナス値もあります(-1チャンネル、-2チャンネルなど)。 マイナスのチャットチャンネルは、スクリプト以外からは使えません。 チャットチャンネルについてちょっと整理しておきましょう。 チャンネル -1以下 0 1以上 通常ログへの表示 なし あり なし チャット欄からの発言 不可能 可能 可能(/1 message) スクリプトからの発言 可能 可能 可能 listenで処理するコマンドなどは、通常ログに表示されるとうっとおしいので、0以外を使います。 チャットからコマンドを入力可能にしたい場合は1以上のチャンネルにします。 チャットからのコマンド入力を不可能にし、ダイアログなどからのみ制御可能にする場合は-1以下を使います。 余談になりますが、スクリプトで使うチャンネルを決める際には、混線に注意して下さい。 例えば、髪の色を変えるスクリプトと、照明の色を変えるスクリプトがどちらも7チャンネルを使っているような場合、 「/7 red」 の発言で、髪と照明が両方とも赤になってしまうようなことが起こり得ます。 ダイアログを実装するのであれば、コマンドをチャット欄から入力する必要がなくなりますので、マイナスのチャンネルを使うのが効果的です。 その際にも、-1チャンネルなどは頻繁に使われていますので、-1237チャンネルとか、使われそうもないチャンネルを選ぶと混線を避けることができます。 以上、4つの引数を指定してダイアログを表示します。 具体的に例を書いておきましょう。 llDialog(llGetOwner(), "Do you love me?", ["Yes", "No", "Never"], -7); この例では、まずllGetOwner()でキーを指定しています。 llGetOwner()は初めて登場しますが、オブジェクトのオーナーのUUIDを取得する命令です。 ですのでダイアログはオーナーの画面に表示されます。 メッセージは"Do you love me?"です。 「愛してるかい?」ですね。 それに対して返答するボタンは、"Yes", "No", "Never"の3つ。 「はい」「いいえ」「ありえない」の3択です。 返事が公の場に聞こえてしまうのはこっぱずかしいので、チャンネルは-7にしています。 こうすることで、愛の結末がどうなるか他人には知られずに済むでしょう。 ダイアログ対応版照明スクリプト さて、ダイアログを照明スクリプトに組み込んでみましょう。 listenを使って照明の色を変化させる部分ができていますので、組み込みは至って簡単です。 「タッチしたとき」に「色を選択するダイアログを表示する」処理を追加するだけで済みます。 ……わずか一行ですね(^^; integer handle; light(vector color){ if (color == ZERO_VECTOR) { llSetPrimitiveParams( [PRIM_POINT_LIGHT, FALSE, ZERO_VECTOR, 0.5, 3.0, 0.75] ); }else{ llSetPrimitiveParams( [PRIM_POINT_LIGHT, TRUE, color, 0.5, 3.0, 0.75] ); } } default { state_entry(){ light(ZERO_VECTOR); } touch_start(integer detected){ handle = llListen(7, "", llDetectedKey(0), ""); llDialog(llDetectedKey(0), "select color", ["red", "green", "blue", "off"], 7); llSetTimerEvent(30.0); } listen(integer ch, string name, key id, string message){ if (message == "red"){ light( 1.0, 0.0, 0.0 ); }else if(message == "green"){ light( 0.0, 1.0, 0.0 ); }else if(message == "blue"){ light( 0.0, 0.0, 1.0 ); }else if(message == "off"){ light(ZERO_VECTOR); }else{ llSay(0, "You can use red, green, blue, and off only."); } llListenRemove(handle); llSetTimerEvent(0.0); } timer(){ llListenRemove(handle); llSetTimerEvent(0.0); } } 追加したのは、 llDialog(llDetectedKey(0), "select color", ["red", "green", "blue", "off"], 7); これだけです。 ダイアログは「タッチした人」の画面に表示しますので、UUIDにはllDetectedKey(0)を指定しています。 llDetectedKey(0)は前回出てきた「タッチした人のUUID」を取得する関数ですね。 メッセージは単純に"select color"(色を選択して下さい)にしました。 ここはダイアログの目的がわかれば何でもかまいません。 ダイアログのボタンは、 ["red", "green", "blue", "off"] の4つです。 listen?イベントの中で処理されるコマンドを列記しただけですね。 llListen()は7チャンネルで「聞き耳を立て」ていますので、ダイアログのチャンネルも7にしています。 これでいちいちチャットで色を発言しなくても、容易に光の変更ができるようになりました。 リストを使いこなす ここまでで完成としてもいいのですが、今回はほとんどコードをいじっていませんので、もう少し改良してみましょう。 list型の変数をうまく使うことで、スクリプトの拡張性を高くすることができるというところをお見せしたいと思います。 リストの良いところは、まさにデータの並びを利用できるところです。 "red", "green", "blue", "off"という4つの文字列が、順番に並んでいるというところに意味があるのです。 リストに入っているデータの順番を「インデックス」と言います。 インデックスは以下のように、0から始まります。 インデックス 0 1 2 3 色 red green blue off さて、この並んだデータの、一体何が便利なのでしょう。 今回のスクリプトでは、vector型の引数に応じて照明の色を変えるユーザー関数を作っていますね。 listen?イベントの中でコマンドを判定し、それに応じたvector型の引数を使っています。 vector型の値が変わるだけで、色を変える部分は共通になっていることに着目して下さい。 listen?イベントの中でやっていることは、単にコマンドに対応するvector値を選んでいるだけだというのが見えるでしょうか。 だらだらと書いているif文は、コマンドに対応するvector値を選んでいるだけです。 コマンドとvector型の値とを並べてみましょう。 インデックス 0 1 2 3 色 red green blue off vector 1.0, 0.0, 0.0 0.0, 1.0, 0.0 0.0, 0.0, 1.0 ZERO_VECTOR このように並べると、「色」と「vector」の間に関連性が出てきます。 関連性とは、インデックスのことです。 インデックス0の「red」は、インデックス0の「 1.0, 0.0, 0.0 」 インデックス1の「green」は、インデックス1の「 0.0, 1.0, 0.0 」 インデックス2の「blue」は、インデックス2の「 0.0, 0.0, 1.0 」 インデックス3の「off」は、インデックス3の「ZERO_VECTOR」 コマンドとvector値のインデックスが一致しています。 ……というか、一致するように並べているのですがw 勘の良い方はおわかりかもしれませんが、私がやろうとしているのはvector値をlist化することです。 ["red", "green", "blue", "off"] // コマンドのリスト [ 1.0, 0.0, 0.0 , 0.0, 1.0, 0.0 , 0.0, 0.0, 1.0 , ZERO_VECTOR] // vector値のリスト このように並べてやると、コマンドとvectorのリストはインデックスで関連付けてやることができます。 つまり、コマンドのインデックスがわかれば、vecotr値を特定することができるようになります。 listen?イベントでコマンドを受け取ったときに、 (1)コマンドのインデックスを調べる (2)インデックスに対応するvector値を使ってlight()ユーザー関数を実行する 例えば、"green"というコマンドが聴こえてきたとします。 "green"のインデックスは1です。 ですので、インデックス1のvector値、 0.0, 1.0, 0.0 を使って照明の色を変えます。 このような仕組みにすれば、色を増やしたいときにはリストにコマンドとvector値を追加するだけで済むことになります。 以下のように実際のコードを書いてみました。 リスト化だけでなく、他にも拡張性を考えて改良を加えています。 integer handle; integer channel = -1; float intensity = 0.5; float radius = 3.0; float falloff = 0.75; list colors = [ "red", "green","blue", "yellow", "Cyan","Magenta", "pink","orange", "purple", "grey","white","off" ]; list rgb = [ 1.0,0.0,0.0 , 0.0,1.0,0.0 , 0.0,0.0,1.0 , 1.0,1.0,0.0 , 0.0,1.0,1.0 , 1.0,0.0,1.0 , 0.965,0.668,0.648 , 0.936,0.504,0.0586 , 0.652,0.340,0.656 , 0.5,0.5,0.5 , 1.0,1.0,1.0 , ZERO_VECTOR ]; light(vector color){ llSetPrimitiveParams( [PRIM_POINT_LIGHT, (color != ZERO_VECTOR), color, intensity, radius, falloff] ); } default { state_entry(){ light(ZERO_VECTOR); } touch_start(integer detected){ handle = llListen(channel, "", llDetectedKey(0), ""); llDialog(llDetectedKey(0), "select color", colors, channel); llSetTimerEvent(30.0); } listen(integer ch, string name, key id, string message){ integer i = llListFindList(colors , [message]); if (i != -1){ light(llList2Vector(rgb, i)); } llListenRemove(handle); llSetTimerEvent(0.0); } timer(){ llListenRemove(handle); llSetTimerEvent(0.0); } } リスト化以外の拡張性を高める改良として、チャンネルや照明の強さ、範囲、減衰率などを変数化しました。 使用するチャンネルを変えたいとか、光の強さを変えたいときは、最初に定義されている変数の値を変えるだけで済みます。 色を指定するコマンドとして、colorsという名前のlist型変数を用意しました。 3色だけでなく、ダイアログで使用可能な12種類まで増やしてあります。 そのコマンドに対応するvector値のリストが、rgbというリスト型の変数です。 listen?イベントの中身が大幅に変わってスッキリしているのがわかるかと思います。 if文がいっぱい書いてあったのが、4行におさまりました。 初めて出てくる命令が二つありますね。 まずllListFindList()ですが、これがインデックスを調べる関数です。 llListFindList関数 integer llListFindList(list src , list find) 最初の引数srcは、インデックスを調べたいリストです。 今回はコマンドのインデックスを調べますので、コマンドのリストcolorsを指定しています。 二番目の引数findは、調べたいリスト内の値です。 今回はlisten?イベントで聴いたコマンドを調べるわけですから、messageを指定しています(引数の型はlist型なので[]で囲んでいます)。 llListFindList()関数は、最初の引数srcリストの中に、二番目の引数findがあるかどうかをまず調べます。 あった場合はそのインデックスを返してきます。 リスト内にない項目だった場合は、-1が返ってきます。 ですので次のif文で、返ってきたインデックスが-1じゃないことを判定しています。 if (i != -1){ 「!=」は「イコールではない場合」の意味です。 「i(調べたインデックス)」が「-1ではなかった場合」ということになります。 つまりコマンドがリスト内にあるものだった場合、です。 llList2Vector()関数も初登場です。 これは指定されたリストの中から、特定のインデックスの位置にあるデータをvector値として取り出す関数です。 取り出したいのは調べたインデックスに対応するvector値ですので、vector値が格納されているrgbリスト変数を指定しています。 (1)コマンドのインデックスを調べる・・・integer i = llListFindList(colors , [message]); (2)インデックスに対応するvector値を使ってlight()ユーザー関数を実行する・・・light(llList2Vector(rgb, i)); 改良したかった部分は以上のようにシンプルになりました。 もう一箇所改良しています。 lightユーザー関数をシンプルに書き換えてあります。 このような書き方は、シンプルではありますが、一見してわかりにくいかもしれません。 余談として説明しておきます。 light(vector color){ llSetPrimitiveParams( [PRIM_POINT_LIGHT, (color != ZERO_VECTOR), color, intensity, radius, falloff] ); } ポイントは照明の二番目のパラメータを、 (color != ZERO_VECTOR) にしているところです。 このパラメータは照明をONにするかOFFにするかでした。 値はTRUEかFALSEです。 (color != ZERO_VECTOR)のような書き方は、先ほどif文でも出てきましたが、 「colorの値がZERO_VECTORではない」 という意味になります。 「colorの値がZERO_VECTORではない」というのが正しい場合はTRUE、間違っている場合はFALSEです。 すなわち、colorがもしZERO_VECTORだったら、 「colorの値がZERO_VECTORではない」というのは間違いですので、FALSEとなり、証明はOFFになります。 それ以外の場合は、 「colorの値がZERO_VECTORではない」というのは正しいですので、TRUEとなり、証明はONになるわけです。 今回のポイント ダイアログの使い方: llDialog(llGetOwner(), "Do you love me?", ["Yes", "No", "Never"], -7); リストのインデックスを調べる: integer llListFindList(list src , list find) インデックスで指定した値を取り出す: llList2Vector(list src, integer index) // vector型で取り出す ※他にも各型に対応した関数があります llList2String(list src, integer index) // string型で取り出す llList2Integer(list src, integer index) // integer型で取り出す llList2Rot(list src, integer index) // rotation型で取り出す llList2Key(list src, integer index) // key型で取り出す など。 if文の条件判定: if (x == y) // xがyと等しい場合 if (x != y) // xがyと等しくない場合 ※他にも以下のような判定ができます if (x y) // xがyより小さい場合 if (x y) // xがyより大きい場合 if (x = y) // xがy以下の場合(xのほうが小さい、もしくはイコール) if (x = y) // xがy以上の場合(xのほうが大きい、もしくはイコール) 最重要はダイアログの使い方です。 ぜひ使いこなせるようになりましょう。 リストの使い方については、何をどうリスト化すると効率がよくなるか、ある程度スクリプト作成の経験を積んでいくと見えてきます。 今回のように、コマンドに対して値が変わるだけで処理は一緒というパターンの際には有効でしょう。 三回にわたって照明スクリプトを作ってきましたが、 「ユーザー関数で処理を統一する」 「listenを使ってコマンドを処理する」 「ダイアログを使ってコマンドを選択する」 この3つはセットで使うことが多いパターンです。 例えば、私の製作している楽器もまさにこれで、 「指定されたサウンドを鳴らす」ユーザー関数を作り、 「listenイベントでサウンド名を受け取る」仕組みにして、 「ダイアログでサウンド名を選択する」ようにしてあります。 典型的なスクリプト構成の一つと言えますので、しっかり身に着けておきましょう。 さて、次回は心機一転、また新たなスクリプトに取り組んでみたいと思います。 名前 コメント
https://w.atwiki.jp/icfcjpn/pages/13.html
現在企業では従来型の経営では立ち行かなくなっています。一方でダイアログ(対話)により繋がりや新しい価値創出を目指す活動においては、その「価値」を如何に企業に届け、評価を受けるかが課題となっています。 以下に現在の国内企業のあり方とダイアログの有効性について記述します。 企業の課題 企業の長所 ダイアログの良さ ダイアログの価値を企業に届ける
https://w.atwiki.jp/m1000/pages/91.html
<<標準コマンド ダイアログ dINIT:ダイアログを初期化する dPOSITION:ダイアログの表示位置を指定する dTEXT:ダイアログに表示するテキストを定義する dEDIT:エディットボックスを定義する dEDITMULTI:複数行対応のエディットボックスを定義する dXINPUT:パスワード用のエディットボックスを定義する dFILE:ファイル名編集ボックスを定義する dCHOICE:選択リストを定義する dCHECKBOX:チェックボックスを定義する dFLOAT:浮動小数点数用エディットボックスを定義する dLONG:長整数用エディットボックスを定義する dDATE:日付用エディットボックスを定義する dTIME:時刻用エディットボックスを定義する dBUTTONS:終了キーを定義する DIALOG:ダイアログを表示する ALERT:警告ダイアログを表示する OPL掲示板
https://w.atwiki.jp/dslua/pages/101.html
構文 dialog( タイトル, 本文[,ボタンの種類] ) 戻り値 操作結果 説明 画面にダイアログを出します。ボタンの種類を指定することにより、4タイプのダイアログを指定できます。 引数 タイトル ダイアログのタイトルです。本文 ダイアログの本文です。ボタンの種類 ダイアログのボタンを指定します。番号とボタンの種類の関係は以下のようになっています。ボタンの種類 0 ボタン無し 1 OKボタン付き 2 Yes/Noボタン付き 3 Yes/No/Cancelボタン付き 戻り値 操作結果 0 Cancel 1 OK または Yes 2 No ------------------------------------------ -- ダイアログ サンプル dialog_sample.lua ------------------------------------------ function main() local a a = dialog("Dialogのサンプル","ダイアログのサンプルです",1) a = dialog("Dialogのサンプル","OKで閉じます",1) a = dialog("Dialogのサンプル","Yes No のサンプル",2) a = dialog("Dialogのサンプル","Yes No Cancelのサンプル 戻り値のチェックあり",3) if a==0 then a = dialog("Dialogのサンプル","Cancel が押されました") elseif a ==1 then a = dialog("Dialogのサンプル","OK または Yes が押されました") else a = dialog("Dialogのサンプル","No が押されました") end end main() 1.ダイアログのサンプルです。OKボタンで次へ進みます。 2.ダイアログのOKボタンで次に進みます。 3.「Yes」「No」のサンプルです。戻り値は利用してせん。 4.「Yes」「No」「Cancel]のサンプルです。戻り値を利用します。 5.この例では「Yes」を押された時の反応です。 6.アンドロイドの「戻る」ボタンを使用して終了します。 コメント(最大30行) 紹介、ありがとうございます。m(_ _)m 戻り値を使わないときは、 dialog("Dialogのサンプル","ダイアログのサンプルです") だけでも、OKです。 a = を省略しても大丈夫です。 -- (たろサ) 2011-08-02 13 20 44 名前 コメント すべてのコメントを見る