テクニック > フェード・アンド・オーバーレイ

フェード・アンド・オーバーレイ


まずはこちらの動画をご覧ください。
例示) http://www.samurizeupboard.jp/source/up1865.wmv

このConfigでは…

  1. ジャケット画像部分をクリックすると、winampコントローラが
 -ジャケット画像より上のレイヤに(=オーバーレイ)
 -フェードインしながら表示される
  2. 操作を終えてマウスをコントローラから離すと、コントローラがフェードアウト

という動作を実現しています。
プラグインやスクリプトなどは必要ありません!(但し、clientは2つ使用します。)

基本構成/動作概念


iniとインスタンスの構成は以下の通りとして解説していきます。各自の環境に合わせ、読み替えてください。

  • Samurize\Configs\
    • base.ini … インスタンス名「base」で使用する。常に表示しておくini。
    • overlay.ini … インスタンス名「overlay」で使用する。オーバーレイ表示するini。

  • インスタンス名「base」
    • 設定ファイル … base.ini
    • 位置を固定
    • 設定ファイル指定の位置に表示
    • デスクトップに貼り付け
  • インスタンス名「overlay」
    • 設定ファイル … overlay.ini
    • 位置を固定
    • 設定ファイル指定の位置に表示
    • デスクトップに貼り付け

フェードイン/フェードアウトには、Config.exeの「プロジェクトのオプション>フェード設定」を使います。つまり、通常のインスタンス切り替え(テクニック/折りたたみ&展開可能な設定ファイルの作成)とは異なり、オーバーレイ表示用のclientを起動/終了させることによりフェード表示を実現します。(←ぶっちゃけ頭のいい人ならここだけ読めば後の説明はほぼ要らないと思う)

オーバーレイ表示は単にbase.iniのインスタンスの上にoverlay.iniのインスタンスを表示するだけですが、こちらはちょっとした小技が必要です。

base.ini(常に表示しておく部分)を作る


まずは好きなようにbase.iniを作ってください。はい、できましたね。
…と、あっさり流すのもアレなので、私の作ったサンプルのスクリーンショットを載せておきます。
_Screen_000516.png

【図1】base.iniの例

それではオーバーレイ表示のためのリンクを作成しましょう。
任意のメーターの「入力」タブより、「入力コントロール」にチェック、「左ボタンクリック」にチェックを入れます。アクションタイプ「リンク」を選択したら、オーバーレイ用インスタンスを起動するリンクを設定しましょう。ここでは「client.exe i=overlay c=overlay.ini mode=pinned」とします。

  • 《一口メモ》 mode=pinnedオプションとは?
 Client.exeの右クリックメニューで「表示位置>デスクトップに貼り付け」を選ぶのと同じ動作を提供します。

一見ムダに見えるこの「mode=pinned」は、overlay.iniがbase.iniの下に隠れて起動してしまう問題を防ぎます。

overlay.ini(オーバーレイ表示部)を作る


次に、オーバーレイ表示する部分を作りましょう。はいできましたねー。
_Screen_000517.png

【図2】overlay.iniの例

さて、overlay.iniには自身を終了させるリンクを設定します。
例えば、【図2】の半透明の灰色っぽい部分からマウスが離れた時に勝手に消えれば便利かも…という場合には、"半透明の灰色"メータを選び「入力」タブから「入力コントロール」にチェック、「描画領域から出る」にチェック、アクションタイプ「リンク」。リンク先は「client.exe i=overlay close」とします。基本ですが、closeオプションはi=hogehogeによるインスタンス指定と組み合わせて任意のインスタンスを閉じる動作を提供します。

次にフェードイン/フェードアウトの設定です。
「プロジェクトのオプション」タブから「フェード設定:有効」のラジオボタンをチェックします。任意のフェード時間を設定してください。(参考:例示の動画では250msです)

また、オーバーレイ表示させる度にタスクトレイアイコンが表示されて煩い、という方は「トレイアイコンを表示」のチェックを外すといいでしょう。但し、念入りに全ての動作確認を済ませてからの方がいいと思います。上手く動かなかった時にタスクトレイアイコンが使えないと面倒ですので…。

完成!しましたか?


ちょっと今体調悪くてフラフラなんで変なこと書いてたり途中で説明が終わってるかもしれません。加筆修正は適当にお願いします。

さて、いくつかトラブルシューティングを書き残しておきます。

  • オーバーレイ表示できません!
    • 「デスクトップに貼り付け(互換モード) 」を使用していませんか?全てのインスタンスにおいて互換モードではなく「デスクトップに貼り付け」を使用してください。
    • それでもダメな場合は、次のように設定を変えてみてください。
    1. base.iniの入力コントロールから「左ボタンクリック」のチェックを外す
    2. 代わりに「左ボタンを押す」にチェックを入れ、リンク先を「client.exe i=overlay c=overlay.ini」とする。
    3. 「左ボタンを離す」にもチェックを入れ、同様にリンク先を「client.exe i=overlay mode=pinned」とする。
     + つまり、一回のクリックで「i=overlayを起動させた一瞬後で「デスクトップに貼り付け」の命令を送る」という二つの動作を実行するようにしてみます。実際には左ボタンを押した時点でその上にi=overlayが表示されるのでi=baseが「左ボタンを離す」を検知することはできない気もしますが…いや、これはi=baseの上にi=overlayが表示されなかった場合だけ有効になればいいのだからこれでいいのか?むしろこの設定が正しい?うーん??わからん。要検証。
  • フェード有効にしたのにフェードしません!
    • どうやらそんなこともあるようですね。原因不明です。
    • 私の環境では、【図2】の一番外側のメータ(画像描画でpngを貼り付けたもの)を削除するとフェードが効かなくなりました。なので、消さずに透過度0とすることで対処しています。
     + あえて透過度255のままでも面白い効果が得られます。これはこれで便利というケースもあるでしょう。お試しあれ。
  • フェード時間を変えても変化がないような気がしますが?
    • ええ、そんなこともあるようですね!原因不明です!まったくこれだから侍ってやつは!
    • 当方の環境では、WindowsMediaPlayerを起動していると正しいフェード時間が反映されることに気付きました。手掛かりが掴めそうです。
     + Live! Messengerのメインウィンドウでも確認。最小化状態でも大丈夫。タスクトレイに収納してるとダメ。
  • 余談だけど、動画はどうやって撮影したの?
  1. 「カハマルカの瞳」をDLして
  2. 「その他>レイヤードウィンドウもキャプチャ」にチェック入れて
  3. ターゲットサイズ設定の時には自動補正ONを忘れずに
  4. 出来上がったaviを「WindowsMediaEncoder9」でwmvにエンコード
  • UP板にwmvとかうpできたっけ?スーパーハカーですか?
    • ヒント:管理人特権
  • ところでそのシークバーってどうやって作ってるの?
  │    _、_
  │  ヽ( ,_ノ`)ノ 残念、それはvolbar.dllだ
  │ へノ   /  
  └→ ω ノ
        >

タグ:

+ タグ編集
  • タグ:
最終更新:2010年12月01日 21:04
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。