.NETを知らない人でも分かるSilverlight入門(2)
SilverlightならWeb上で高精細な動画再生も簡単?
松原晋啓
2008/1/29
■ イベントハンドラの引数
- - PR -
実際にイベントを使用する際は、先に紹介した<MediaElement>オブジェクトのサンプルのようにXAMLのタグオブジェクト上にイベントハンドラを定義し、(Silverlight 1.0では)JavaScript上にイベントハンドラの処理を記述することになります。
イベントハンドラには、「引数」と呼ばれるパラメータが必ず定義されております。Silverlight 1.0において、一般的には表5のようなパラメータですが、キーボード入力イベントやマウス入力イベントは表6や表7のように複数の値を持つオブジェクトとなりますので、注意する必要があります。
| 表5 イベントハンドラ引数(キーボード入力、マウス入力以外) | ||||||
|
| 表6 キーボード入力のイベントハンドラ引数 | ||||||
|
| 表7 マウス入力のイベントハンドラ引数 | ||||||
|
エラーはどうやってハンドリングする?
Silverlight 1.0のエラーハンドリングは、以下のように3つの方法があります。
- OnErrorイベントハンドラの定義
- JavaScriptのtry/catchブロックを使った同期エラーイベント
- Silverlightの特有のイベントを使った非同期エラーイベント
2つ目に関しては、JavaScript標準の機能ですので、ここでは割愛します。
3つ目に関しては、ImageFailedイベントやMediaFailedイベントなどSilverlightの特有のイベントで定義されているエラーイベントにエラー処理を記述することを指します。このときのイベントの使用方法は通常のイベントと変わりありません。
例えば、今回のアプリケーションにMediaFailedイベントを追加すると、以下のようになります。
| Page.xamlの一部 |
<MediaElement x:Name="media" Width="640" Height="480" |
| Page.xaml.jsの一部 |
// メディア関連エラーハンドラ |
■ Silverlight 1.0はOnErrorイベントでエラー処理
Silverlight 1.0では、特有のエラーイベントを処理したい場合でなければ、通常はOnErrorイベントを使用します。
表5でも記載したとおり、OnErrorイベントのEventArgsパラメータには、ErrorEventArgsオブジェクトが格納されています。このErrorEventArgsオブジェクトには、ParserErrorEventArgsとRuntimeErrorEventArgsの2つのタイプがあり、それぞれで格納されているデータが異なります。それぞれのデータに関しては表8〜10にまとめました。
| 表8 ErrorEventArgsオブジェクトのプロパティ(onErrorイベントハンドラに共通するErrorEventArgsオブジェクトのプロパティ) | ||||||||
|
| 表9 パーサーエラーを特定するParserErrorEventArgsオブジェクトのプロパティ | ||||||||||||
|
| 表10 ランタイムエラーを特定するRuntimeErrorEventArgsオブジェクトのプロパティ | ||||||||
|
OnErrorイベントでこれらすべてのエラー情報をポップアップメッセージとして表示する場合は、以下のようなロジックになります。
| Default_html.jsの一部 |
onError: function(sender, args) { |
なお、このエラーハンドリング処理は特定のエラーハンドリングが必要なければ、このままで再利用できます。
次回からはグラフィックス描画に関する機能
今回のグローアップ・アプリケーションは、まだ2D/3Dグラフィックスやアニメーション、ブラシなどの解説を行っておりませんので、メディアの再生・一時停止・停止とフルスクリーン表示が行えるだけで、後はエラーハンドリングを行うだけの簡単なアプリケーションとなりました。
このグローアップ・アプリケーションは、毎回サンプルコードも提供していますので、「こちら」よりダウンロードして試してみてください。なお、サンプルコードに動画は含まれていませんので、別途ご用意してお試しください。このアプリケーションは最初にも説明したとおり、各回の解説した内容を追加していき、最終的に1つのアプリケーションを作成します。
■ Silverlightらしいユーザーエクスペリエンス/メディアエクスペリエンス
今回はSilverlightでよく使われるメディアとイベントに関して解説しました。次回からは描画に関する機能の解説をしていきますので、グローアップ・アプリケーションも徐々にSilverlightらしいユーザーエクスペリエンス/メディアエクスペリエンスを持ったRIAになっていきます。次回以降もぜひご期待ください。
■ @IT関連記事
| Silverlightは次世代のJavaScriptフレームワーク? ついに正式リリース! いまこそ知りたい!! どの環境でも動くマイクロソフトのRIA技術Silverlightについて、実際に動く2つのサンプルを見ながら、その特徴と技術を解説 「リッチクライアント & 帳票」フ ォーラム 2007/9/7 |
||
| Silverlightと株価ビジュアライゼーション 連載:Flash観測所(2) マイクロソフト発の新動画再生技術のSilverlightと、複雑な株価データを効果的に見せるFlashアプリサービスを紹介する 「リッチクライアント & 帳票」フ ォーラム 2007/5/9 |
||
XAMLの基礎知識
.NET Framework 3.0のWindowsアプリ構築フレームワーク「WPF」においてGUI記述を担うXAML(ザムル)。この新言語を基礎のキソから学ぶ
| 北米で話題のFlash動画アプリケーションサービス 連載:Flash観測所(1) 北米で話題のFlashによる動画サイト。UGC的ビデオ共有サイトの動画に付加価値を加えたり、ユーザーが編集できる話題のサービスを紹介する 「リッチクライアント & 帳票」フ ォーラム 2007/4/5 |
||
JavaScriptプログラミング再入門
Ajax全盛のいま、オブジェクト指向ベースのJavaScript知識は不可欠。過去を振り返りつつ、まずは最新開発事情をチェック
- 第1回 JavaScriptの復権
- 第2回 JavaScriptの関数をマスターしよう
- 第3回 JavaScriptにおける変数の宣言とスコープ
- 最終回 JavaScriptでオブジェクト指向プログラミング
| プロフィール |
松原 晋啓(まつばら のぶあき) SE、コンサルタント、エバンジェリストを経て、現在はソリューションスペシャリストとして活動。その傍ら、イベントや記事寄稿を通じてマイクロソフトのテクノロジーや製品の普及に努めている。趣味は小学校から続けているバスケットボールで、4年前にチームを作り、現在もリーダーとして活動を行っている |
| INDEX | ||
| .NETを知らない人でも分かるSilverlight入門(2) SilverlightならWeb上で高精細な動画再生も簡単? |
||
| Page1 GyaOも採用、高精細動画の再生機能を体験せよ 手軽に動画配信?−MediaElementオブジェクト |
||
| Page2 サポートするフォーマット、サポートしないフォーマット Silverlight 1.0のイベント処理はどうなっているのか? |
||
| Page3 エラーはどうやってハンドリングする? 次回からはグラフィックス描画に関する機能 |
||
| リッチクライアント&帳票 全記事一覧へ |
TechTargetジャパン
- コンテンツ政策ヲ転換セヨ! (2012/2/10)
mixiにしろTwitterにしろニコ動にしろ、ソーシャルサービスは伸びている。シロウトの個人が作るコンテンツで成り立つサービスだ - NFCやLTE対応予定のiPhoneと、先行するAndroid (2012/2/9)
iPhoneとAndroid、そしてWindows Phoneという3つのOSの今後を占う。それぞれの通信規格とコンセプトは? - 家電のUIになるブラウザ (2012/2/3)
未来の家電はインターネットに接続でき、ブラウザが内蔵されてくる。家電にブラウザが載ったらどうなるか? 未来のホームネットワークを想像しよう - 「汎用のUI技術」として広がるHTML5 (2012/2/2)
すさまじい勢いで成長しているHTML5を中心としたオープンなWebプラットフォーム。HTML5やAPI、Webブラウザのアップデート情報をお伝えする
|
|

SE、コンサルタント、エバンジェリストを経て、現在はソリューションスペシャリストとして活動。その傍ら、イベントや記事寄稿を通じてマイクロソフトのテクノロジーや製品の普及に努めている。