-0400」を返します。曜日、日付、時刻に続いて最後に、グリニッチ標準時との時差インターネットに関わって来ると、世界各地のローカル・タイムを知る必要がいろいろな場面で出てきます。date」で自分のいる時間帯を知る事もできますが、Unixシステムで使われるコマンドラインを、LiveCodeのシェル(shell)と言うファンクションを使って、世界各地のローカル・タイムを知る事ができます。OSのターミナルで使われるものと同じで、Windowsの環境では使えません。WindowsのLiveCodeのシェル(shell)は、DOSコマンドが使えます。クロスプラットフォームで開発していたら、プラットフォームが「Windows」でなければ、と言う「if文」を始めに使います。2013」が返されます。使われているドル・サイン「$」はUnixシステムの環境を指し示すキャラクターです。「$TZ」に都市名を入れて、「shellファンクション」のパラメータを「date」にすると、Unixで設定されたタイムゾーンの時間が返されます。」でタイムゾーンのリストが見ることができます。「shell」を使ったUnixコマンドは、LiveCodeの使えるLinux、Macサーバーで特に重宝します。ダウンロードできます。http://livecode.com/developers/guides/server/Windowsでタイムゾーンを取得するDOSコマンドを、私は知りません。Windowsでは「shell」を使うとコンソール・ウインドウズが開かれてしまうので、それを閉じる設定を始めに行います。Windowsの「shell」で「date」を取得する例文です。(yy-mm-dd)の2行が返されます。keyboard」にチェックを入れていれば、キーボードのスペース・バーでプレイ、ストップができます。それでは少し心もとないと感じた場合、「Play」「Pause」「Stop」のボタンを別に作る事ができます。ツール・パレットから「Play」「Pause」「Stop」を作ります(下図)。名前(name)は「tStop」レイベル(label)は「STOP」にしました。mouseUp特に説明の必要もないくらにシンプルです。これだと「PAUSEボタン」と「STOPボタン」の違いが明確ではありません。プレイヤーをストップさせた時点で、ビデオを始まりか終わりに持って来ると言う方法を取ります。1」で得る事ができますから、カレント・タイム(currentTime)を「0」にセットすれば、ユーザーがストップのクリッックでビデオの位置(時間)は最初に設定されます。赤文字が追加するスクリプトです。ボタンをイメージにしてカスタムにhttp://kenjikojima.com/livecode/download/multiMedia14.zipボタンにイメージのアイコンを表示させます。それぞれダウンロード・ファイルに3種類のイメージを用意しました。1)普通の状態のボタン。2)マウスが被さった時のボタン。3)クリックされた時のボタンの3種類です。今回は四角にしていますが、PINGかGIFFの透明イメージを作れば、丸にでも三角でも、好きな形ができます。File...」からカード上にイメージをインポートすると、カードの中央にイメージが現れます。インポートしたイメージは、ユーザーが見えない場所、例えば「Xのマイナスロケーション」とかに移動させれば良いのですが、アイコン・イメージを沢山必要な場合、私はアイコン専用のカードを作ってそこに並べて置く事が多いです。しなければいけないと言う事ではありません。name」のチェックを外します。イメージに透明部分がある時は「Opaque」のチェックも外して、透明なバックグラウンドのボタンにします。Border」を開いて、「Icon」の右端のマジック・ワンドのようなアイコンをクリックすると(下図)イメージ・ライブラリーが開きます。Stack」を選ぶと、このスタックにインポートしたイメージのリストが出ます。このイメージのライブラリーは、正しいイメージを表示しない事が時々あります(下図)。マウスを被せた時に出て来るツールチップは、インポートしたイメージの「ID」です。アイコン」がセットされます。IDが分かっていれば、イメージ・ライブラリーを開かずにIDをタイプできます。Icon)のアイコンも同じにセットします。フーバー(Hover)はマウスがターゲットの上を通過した時に反応します。border」も必要がないので、チェックを外します(下図)。注意:IDは、イメージをスタックにインポートした時の状態によって、このチュートリアルに書いてあるナンバーとは違っている場合があります。content」をクリックして調整してください。同じ作業を「PAUSE」「STOP」のボタンでも行います。手順通り進めていたら、うまく行っているはずです。これで3つのボタンのそれぞれの機能は完成ですが、「PLAY」をクリックしてビデオが始まったら、「PLAY」を「PAUSE」にするという事もできるはずです。「PLAY」と「PAUSE」を1つにまとめて、ボタンは2つだけに整理しても良いわけです。手順としては、「PLAY」と「PAUSE」のスクリプトを1つにまとめて、切り替えでアイコンのイメージを変えます。アイコンのイメージは「ID」でセットされていますから、「PLAY」と「PAUSE」で使っているイメージの「ID」を調べなくてはいけません。上で見たようにボタンのインスペクターを開ければ、それぞれの「ID」は知る事ができます。直接インポートしたイメージのインスペクターで「ID」が分かります(下図)。テストに「iconTest」と言うボタンを作って、メッセージ・ボックスから送ってみます。「button」は短縮形の「btn」を使っています。「PAUSE」の普通のボタンがセットされます。「PLAY」の普通のボタンがセットされます。「PLAY」と「PAUSE」のスクリプトを1つにして、アイコンが切り替わるボタンにします。(tPause)」は、必要なくなりましたから削除してください。実はもうひとつ修正しなくてはいけない箇所があります。ボタン「tPlay」のアイコンが「PAUSE」の時、ボタン「STOP」がクリックされる可能性があるので、「STOP」がクリックされたらボタン「tPlay」のアイコンは必ずイメージ「PLAY」に戻さなくてはいけません。mouseUpカスタム・コマンドにしてカードにまとめるさて、機能的にはこれでも良いですが、IDナンバーが違っているだけの、同じようなスクリプトが幾つかダブっていますね。これをまとめたカスタム・コマンドにして、カードのスクリプト・エディターに入れる事にしましょう。今の処はそう複雑でもないコードですが、少し入り組んで来ると、カスタム・コマンドやカスタム・ファンクションで引き出せた方が都合の良い事も多いですし、読み返してもすっきりとします。スクリプトはまとめる習慣をつけておきましょう。2」を読み返してください。カスタム・コマンドは「iconSet」と言う名前にしました。パラメータは4つあります。"tPlay"」が幾つもダブっています。"tPlay"」を使う事もできますが、あるいは後から他のボタンのアイコンも変える必要が出て来る可能性もあるので、こういう場合はできるだけ汎用で使える形にしておくのが得策です。下に書いた緑文字の1行目コマンド名「iconSet」の次にある「pBtnName」は、アイコンを変えるターゲットのボタン名です。pHoverID」は、オリジナル・イメージのIDナンバーです。ボタン「tPlay」のスクリプトをカスタム・コマンド「iconSet」を使って書き換えます。mouseUpこれでずいぶんスッキリしてきました。「PLAY」「STOP」ボタンもビデオ画面の中に入れられたら、レイアウト的にはスッキリする時もありますね。エディット・ツールで「PLAY」と「STOP」ボタンを、プレイヤー・オブジェクトの上に移動させてください。レイヤーでは確かにボタンの方が上にあるのに、ビデオ画面の中に隠れてしまいます。バファー」というのがあります(上図)。LiveCodeのプロパティとしての正確な言葉は「alwaysBuffer」です。バファー」は何かの衝撃を和らげるという意味なのですが、「alwaysBuffer」を「true」にすることで、ビデオ画面を描く為にイメージのメモリーを短時間蓄えておく処理で起きるフリッカー(ちらつき)を、和らげる働きをします。「PLAY」と「STOP」ボタンを、プレイヤー・オブジェクトの上に移動させた時に、見えなくなってしまったのは、そのフリッカーのせいだからです。バファー」にチェックを入れておけば、ボタンは見えるようになります。これはアイコンのボタンだけでなく、他のグラフィック等のオブジェクトにも有効です。toggle(showBadge)」はtrueにしても働きません。サウンドのボリューム調整サウンドのボリューム調整を作ります。いろいろなボリューム調整の形体はありますが、今回はツール・パレットからスライダー(Slider)をドラッグ&ドロップして使います。スライダーのオブジェクト名は「scrollBar」で、そのスタイル(style)を「scale」に設定した形を取っています。「scale」はインスペクターの「Type」では「Slider」となっていて、ちょっと混乱しやすいですね。オブジェクト・スクロールバー(scrollBar)はスケール(scale)の他に、スタイル(style)を「scrollbar(グループ・イメージ等をスクロールさせる)」と「progress(作業の進行状況を視覚化する)」に設定できます。スライダー(Slider)はデフォルトでは横位置なので、インスペクターの「Orientation」を「Verticle」にして、タテの設定に直します(下図)。ボリュームのスクリプトに行く前に、スクロールバー(scrollbar)をスライドした時の数字を設定しておきます。value)ですから、インスペクターに「100」と「0」を入れてください(上図)。通常のスタート・バリューの反対にしないと、扱いにくいボリューム調整になってしまいます。Value(現在の値)はスクロールバー(scrollbar)をスライドさせる都度変わっていますから、設定の必要はありません。Value」としているプロパティは、LiveCodeでは「thumbPosition」と言います。英語の「thumb」は親指の事ですが、スクロールバーの丸い移動する印をサム(thumb)と言って、そのポジション(position)を「thumbPosition」と呼んでいます。「thumbPosition」は長いので、短縮形の「thumbPos(サンポス)」が、LiveCodeデベロッパーの間では普通に使われます。現在のサンポス(thumbPos)をメッセージ・ボックスから聞いてみましょう。1)のサンポス(thumbPos)を返しなさい。value)を「100」にしているので、サム(thumb)をトップに持って行くと「100」を返します。ボリューム設定の言葉「playLoudness」で設定してみます。これで最大ボリュームです。これで最小ボリュームで無音です。1」のボリューム設定にします。1)に入れるスクロプトです。プレイヤー1の音量を私のサンポス(thumbPos)に設定しなさい。Button)を置きます。プロパティはそれぞれ好みでも良いのですが、私はボーダーを取って、ハイライトにした時のカラーをシルバーにしました(下図)。mouseUpプログレス・バーダウンロードしたスタック「quickTime.livecode」を参照してください。Bar)の設定は、中級入門くらいに属する内容かもしれません。ここではビデオの時間経過を視覚化するサンプルで作っていますが、大量のデータを処理して行く経過などでも、よく見られるプログレスバーですから、考え方をだいたいでも理解しておくのが良いかと思います。Bar)をプレイヤーの下に置いて、左右はプレイヤー・オブジェクトと同じ長さにします(上図)。名前(Name)は「timeBar」としました。Bar)は、オブジェクトのスクロールバー(scrollbar)のスタイル(style)をプログレス(progress)としたもので、設定するプロパティはスライダー(slider)とほとんど同じです。duration)にして、ビデオのカレントタイム(currentTime)をプログレス・バーのサンポス(thumbPos)に設定して行けば良い事になります。このサンプルでは100ミリセコンド(milliseconds)毎に、バーの進行状況を書き換えて行きます。100ミリセコンド(milliseconds)毎にバーの進行状況を書き換えると言う事は、同じステートメントを10分の1秒毎にコンピュータに送り続けなくてはいけません。コマンド」を使います。カスタム・コマンドの名前は「videoTimer」としました。カードのスクリプト・エディターに書きます。だいたいの構成と説明(緑文字)を下に書きました。これはカスタム・コマンド「videoTimer」です。2)「videoTimer自身」に「videoTimer」を100ミリセコンド毎に送り(send)続けます。result)をIDとして「lVideoTimerID」に取得して、送り続けるのをストップする時に、そのIDをキャンセルします。「lVideoTimerID」は、他のメッセージ・ハンドラー内でも使えるように、他のオブジェクトやカード、サブ・スタックにまたがるようでしたらグローバル・コマンド、または同じオブジェクト内ならローカル・コマンドにします。上のだいたいの構成(緑文字)では、まだそれは書いていません。100ミリセコンド毎に実行されるステートメントで、プレイヤーの進行している時間(currentTime)とスクロールバー(sb)「timeBar」のサンポス(thumbPos)を同じ値にセットします。同じ数字に設定してあります。「timeBar」のサンポス(thumbPos)のエンドバリュー(endValue)と、プレイヤーの進行している時間(currentTime)が同じになったら、IDとして取得している「lVideoTimerID」をキャンセルして、プレイヤーをストップします。その他、アイコン、ビデオ等を「PLAY」の初期設定に戻します。videoTimerカード上にあるボタン「PLAY」のスクリプトは、カスタム・コマンド「playVideo」にしてカード内に移動します。mouseUpカード上にあるボタン「STOP」のスクリプトは、カスタム・コマンド「stopVideo」にしてカード内に移動します。me」を使ったテストでよく起こるトラブルは、スクリプトのバグでエディターが開いて実行が途中で止っても、「sendコマンド」が送り続けられて、ストップできないと言う事があります。gVideoTimerIDを送れば、ストップされます。上のようなローカル(local)の場合は、オブジェクト内(この例ではカード内)で実行されなければ、ローカル(local)は有効ではありません。All」をクリックしてすべてキャンセルさせてストップします。TipsクロスプラットフォームでQuickTimeを使うアプリは念のため、メイン・スタックを開く時にQuickTimeのバージョン・チェックで、QuickTimeがインストールされているかチェックした方が良いです。オブジェクトは、インスペクターで「MOVファイル」が設定されていますが、フォーマットを変更する事で「MOVファイル」以外のビデオがセットできます。オブジェクトのコントローラーを取り外し取り付けは、「formattedHeight」を求めてコントローラーは天地20ピクセルで調整します。普通にビデオを映している状態に他のオブジェクトを乗せると、フリッカーのためオブジェクトが隠れてしまいます。プレイヤーの「alwayBuffer」をtrueに設定すると、他のオブジェクトが見えるようになります。name)から求められます。アイコン用にインポートしたイメージは、ユーザから見えない処でしたらどこにでも置けて、アイコンとしてはIDナンバーでセットします。Stack」は、正しいイメージが表示できない事があります。Content」をクリックします。同じスクリプトが他のオブジェクトで何カ所も使われる時は、カスタム・コマンド、カスタム・ファンクションにまとめます。All」でストップさせる。