Silverlight1.0 アプリケーション開発 0.はじめに Silverlightの特徴 • ベクターベースの図形の描画 • アニメーション対応 • メディア対応 • 高精細動画配信 • .NET開発環境との連携(ver 1.1以降) • JavaScriptに加えて、C#、VB、IronRuby、 IronPythonでの開発が可能になる Silverlight1.0 / 1.1 アプリケーションの仕組み • Silverlightアプリケーションのファイル構成 • 必要最低限の構成は以下の通り ファイル 用途 xxxx.htm スタートページ。Silverlightオブジェクトの作成ロジックの 呼び出し。 Silverlight.js Silverlightプラグインのインスタンス生成を行う。 Silverlight SDKに付属。 xxxx.xaml Silverlightアプリケーションの描画やイベントの定義を格納。 XXX.dll XAMLのNameSpaceの箇所に、以下の参照が追加される (1.1) xmlns:Custom="clr-namespace:XXXXXXXXXXXXXXX;assembly=ClientBin/XXX.dll“ Silverlightアプリケーションの仕組み • Silverlightアプリケーションの動作 1.Webブラウザ上で、JavaScriptがSilverlightインスタンスを 生成。 2.生成されたSilverlightインスタンスは、指定されたXAMLの 内容に従い画面の動的な描画を行う。 (ブラウザ上に、もう一層、ブラウザ非依存のXAMLレンダリ ングエンジンを搭載しているイメージ) Silverlightアプリケーションの仕組み XAML Silverlight JavaScript (Silverlight.js) ) JavaScript (html HTML 内 レスポンス ブ ラ ウ ザ Silverlight 1.0 アプリケーション 開発 1.Silverlight アプリケーション開発の 準備 Silverlightアプリケーション開発に必要なもの Silverlightアプリケーション開発に最低限必要なもの • Silverlight1.0ランタイム(プラグイン) http://www.microsoft.com/silverlight/install.aspx • Silverlight1.0 Software Development Kit http://www.microsoft.com/downloads/details.aspx?FamilyId=C7 2F125F-A6F6-4F4E-A11D-6942C9BA1834&displaylang=en • Webブラウザ Silverlightアプリケーション開発の準備 • フォルダを作成し、以下のファイルを配置 • Silverlight.js • Silverlight1.0 SDKのインストール先(デフォルトでは、 C:\Program Files\Microsoft Silverlight 1.0 SDK\Resources)より、 コピーして使用 • HTMLファイル • XAMLファイル js/Silverlight.js XAML/demo.xaml Default.html Silverlightアプリケーション開発手順 htmlファイルの作成 • 通常のHTMLファイル中に以下を記述する 1.Silverlight.jsファイルへの参照 2.CreateSilverlight関数の記述 3.CreateSilverlight関数の読み込み 4.<div>によるSilverlightアプリケーションの表示 位置指定 Silverlightアプリケーション開発手順 htmlファイルの作成(続き) Silverlightアプリケーション用htmlファイル標準的な記述例 <html> <head> </head> // 1.Silverlight.jsへの参照 <script type="text/javascript" src="js/Silverlight.js"></script> // 2.createSilverlight関数 <script type="text/javascript" > function createSilverlight() { // 内容は後で記述 } </script> // 3.createSilverlight()関数の読み込み <body onload=“createSilverlight()”> // 4.Silverlightアプリケーションの表示位置 <div id="SilverlightControlHost"></div> </body> </html> Silverlightアプリケーション開発手順 htmlファイルの作成(続き) createSilverlight関数の記述例 Silverlightプラグインのインスタンス生成に必要な引数の記述 function createSilverlight() { Silverlight.createObjectEx({ source: “XAML/demo.xaml”, // XAMLファイル parentElement: document.getElementById(“SilverlightControlHost”), id: “SilverlightControl”, // このオブジェクトのID properties:{ width: “100%”, // 表示領域の横幅 height: “80%”, // 表示領域の縦幅 version: “1.0” // バージョン }, <div id="SilverlightControlHost"></div> events:{}, }); } Silverlightアプリケーション開発手順 createSilverlight関数について Silverlight1.0 SDKのインストール先の、 CreateSilverlight.jsファイルに、 CreateSilverlight関数の説明が記載されている Silverlightアプリケーション開発手順 Silverlight.jsとCreateSilverlight.jsについて Silverlight.jsとCreativeSilverlight.jsについての 詳細な情報は、以下のドキュメントを参照のこと 『Using CreateSilverlight.js and Silverlight.js』 http://msdn2.microsoft.com/en-us/library/bb412401.aspx Silverlight1.0 アプリケーション開発 2.XAMLによる Silverlightオブジェクトの 記述 XAML (eXtensible Application Markup Language)とは • XAMLは、グラフィックデータ、UI、アニメーションなどの定義に 使用できるXMLベースの言語。.NET Framework 3.0のWPF (Windows Presentation Foundation)で使用するマークアップ言語 として導入された。 • アプリケーション開発時に、デザイナとデベロッパーとの間の、 共同作業を円滑にするように設計されている。 Designer Developer XAMLの作成方法 • Expressionなどの開発ツールを使用する • ツールで作成したデザインがそのままXAMLとして出力される。 生産性が高い。 • テキストエディタなどを使用して直接記述 • XAMLを直接記述していくので、XAMLの知識があれば、効率 良い記述が可能 • Expression Blend、Designer、Encoder、Media、等を Visual Studio 2008 と組み合わせて使用するのがベスト • 他社製品のファイル形式も読み込み可能 • 3rdパーティ製プラグインも存在(SWF、Illustrator、・・・) • デベロッパーもBlendだけは使えるようにする必要がある Silverlightアプリケーション開発手順 SilverlightアプリケーションでのXAMLの記述 • テキストエディタ、ツールなどを利用して、拡張子“.xaml”のファ イルを作成し、Silverlightで使用可能な各エレメントと属性を記述 • Silverlight用のXAMLでは、ルートエレメントとしての、<Canvas> 要素を、必ず記述する必要がある ※WPFの場合には<Window>または<Page>タグ • そのタグの間に各オブジェクトを表すタグを記述していく Silverlight用XAMLのルートエレメント<Canvas>要素の記述 <Canvas xmlns = “http://schemas.microsoft.com/client/2007” xmlns:x = “http://schemas.microsoft.com/winfx/2006/xaml”> <!-– この間に描画用の各要素を記述していく --> </Canvas> Silverlightアプリケーション開発手順 XAMLのコントロールオブジェクト • ルート要素<Canvas>タグ内に図形に対応したタグを記述していく Silverlightアプリケーションの主なオブジェクト タグ 意味 <elipse> 楕円 <Line> 線 <Path> カーブや円弧を含む複雑な図形を表 すための線 <Polygon> 任意の数の辺を持つ閉じた図形 <Polyline> 閉連続した線 <Rectangle> 矩形 <Image> 画像 *他にも描画要素には、<textblock>、<MediaElement> などがある Silverlightアプリケーション開発手順 XAMLのコントロールオブジェクト記述例 • Canvasの左端から10、上端から10、高さ100、幅100、色ライトブ ルーの矩形を黒い幅10の枠線で描画 demo.xamlファイル <Canvas xmlns = “http://schemas.microsoft.com/client/2007” xmlns:x = “http://schemas.microsoft.com/winfx/2006/xaml”> <Rectangle Canvas.Top = “10” Canvas.Left = “10” Height = “100” Width = “100” Fill = “LightBlue” Stroke = “Black” StrokeThickness = “10” /> </Canvas> Silverlightアプリケーション開発手順 XAMLのプロパティの記述 • プロパティは、オブジェクトを表すタグの属性として記述される ほとんどのコントロールオブジェクトで共通のプロパティ 属性 意味 Canvas.Top Canvasの上端からの距離 Canvas.Left Canvasの左端からの距離 Height 高さ Width 幅 Fill 塗りつぶしの色 Stroke 枠線の色 StrokeThickness 枠線の幅 Silverlightアプリケーション開発手順 XAMLのプロパティ記述例 • プロパティは、個別にタグを記述することで、より詳細な設定が 可能 Fillプロパティを個別に設定し、色にグラデーションを設定 demo.xamlファイル <Rectangle Canvas.Top = “10” Canvas.Left = “10” Height = “100” Width = “100” Stroke = “Black” StrokeThickness = “10”> <Rectangle.Fill> <LinearGradientBrush StartPoint=“0,0” EndPoint=“1,0”> <GradientStop Color=“Blue” Offset=“0.0” /> <GradientStop Color=“Red” Offset=“0.5” /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> Silverlightアプリケーション開発手順 XAMLの視覚効果用プロパティの記述例 • 表示オブジェクトに用意されている視覚効果用のプロパティを設 定することで、様々な視覚的効果を加えることが可能 RotateTransformプロパティを設定し、表示させる図形を40度傾ける demo.xamlファイル <Image Source = “../image/pic01.jpg” Canvas.Top="50" Canvas.Left="150" Height = "200" Width = "200"> <Image.RenderTransform> <RotateTransform Angle=“40” /> </Image.RenderTransform> </Image> Silverlightアプリケーション開発手順 XAMLの視覚効果用プロパティの記述例(2) • RenderTransformのその他の設定 設定値 効果 RotateTransform 回転 ScaleTransform 拡大/縮小 SkewTransform 傾斜 Silverlightアプリケーション開発手順 XAMLの視覚効果用プロパティの記述例(3) • その他の視覚効果用プロパティ 設定値 効果 Opacity 透明 OpacityMask 透明マスク効果 Clip 切り取り Silverlightアプリケーション開発手順 XAMLのアニメーションの記述 アニメーションは、<Storyboard>要素の各属性に、 アニメーション効果を適用する要素名と、変化させる プロパティ名、変化する時間を指定する アニメション効果を適用する図形の名前 <Storyboard x:Name=“animation1” Storyboard.TargetName = “pic01” Storyboard.TargetProperty = “(Canvas.Left)”> <DoubleAnimation RepeatBehavior=“Forever” To=“300” Duration=“0:0:1” /> </Storyboard> 変化させるプロパティ 繰り返しの回数 変化させる値の最大値 変化させる時間 Silverlightアプリケーション開発手順 XAMLのアニメーションの記述例 XAMLがロードされるとオブジェクト”elipse1”の Canvas.Leftプロパティが1秒の間に300まで増分する。 RepeatBehavior属性にForeverを指定することで、 elipse1が右への移動を繰り返す <Canvas.Triggers> <EventTrigger RoutedEvent=“Canvas.Loaded”> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetName=“ellipse1" Storyboard.TargetProperty="(Canvas.Left)“ RepeatBehavior=“Forever” To="300" Duration="0:0:1" /> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Canvas.Triggers> <Ellipse x:Name="ellipse1" Height="20" Width="20" Canvas.Left="30" Canvas.Top="30" Fill=“Green"/> Silverlightアプリケーション開発手順 XAMLのアニメーションの記述例(2) HTMLファイル内にJavaScriptで定義された関数によりXAMLで 定義されたアニメーションを制御する animeStart(); 開始、animePause(); 一時停止、animeStop(); 停止 XAML <Canvas.Resources> <Storyboard x:Name="animation" Storyboard.TargetName="ellipse1" Storyboard.TargetProperty="(Canvas.Left)"> <DoubleAnimation RepeatBehavior="Forever“ To="300" Duration="0:0:1" /> </Storyboard> </Canvas.Resources> <Ellipse x:Name="ellipse1“ Height="20" Width="20" Canvas.Left="30" Canvas.Top="30“ Fill="Green"/> <Canvas MouseLeftButtonDown="animeStop" Canvas.Left="20" Canvas.Top="60"> <Rectangle Stroke="Black" Height="40" Width="40" RadiusX="5" RadiusY="5"> </Rectangle> <TextBlock Canvas.Left="5" Canvas.Top="5">STOP</TextBlock> </Canvas> <Canvas MouseLeftButtonDown="animePause" Canvas.Left="70" Canvas.Top="60"> <Rectangle Stroke="Black" Height="40" Width="50" RadiusX="5" RadiusY="5"> </Rectangle> <TextBlock Canvas.Left="5" Canvas.Top="5">PAUSE</TextBlock> </Canvas> <Canvas MouseLeftButtonDown="animeStart" Canvas.Left="130" Canvas.Top="60"> <Rectangle Stroke="Black" RadiusX="5" RadiusY="5" Height="40" Width="50"> </Rectangle> <TextBlock Canvas.Left="5" Canvas.Top="5">START</TextBlock> </Canvas> JavaScript function animeStart(sender, args) { sender.findName("animation").begin(); } function animePause(sender, args) { sender.findName("animation").pause(); } function animeStop(sender, args) { sender.findName("animation").stop(); } • Silverlightのオブジェクト、メソッド、プロパティにつ いては、以下のドキュメントを参照のこと 『Silverlight Reference』 http://msdn2.microsoft.com/en-us/library/bb188567.aspx Silverlight1.0 アプリケーション開発 3.Silverlightと JavaScriptとの連携 Silverlightアプリケーション開発手順 Silverlightアプリケーションのイベントの取得 Silverlightアプリケーションのイベントは、XAMLの属性を 使用してJavaScriptのイベントハンドラを割り当てることができる XAML <Ellipse x:Name="elipse1“ MouseLeftButtonDown=“elipse1_onClick” Height=“100" Width=“100“ Stroke=“Black” StrokeThickness=“5” Canvas.Left="30" Canvas.Top="30“ Fill="Green"/> JavaScript function elipse1_onClick(sender, args) { alert(sender.Name + “がクリックされ ました。”); } Silverlightアプリケーション開発手順 Silverlightアプリケーションのイベントの取得 イベントハンドラの引数は共通で、常に、senderとargs 引数senderを使用してイベントの発生元オブジェクトにアクセス可能 XAML <Ellipse x:Name="elipse1“ MouseLeftButtonDown=“elipse1_onClick” Height=“100" Width=“100“ Stroke=“Black” StrokeThickness=“5” Canvas.Left="30" Canvas.Top="30“ Fill="Green"/> JavaScript function elipse1_onClick(sender, args) { alert(sender.Name + “がクリックされ ました。”); sender.Fill=“Red”; } Silverlightアプリケーション開発手順 JavaScriptからSilverlightへのアクセス JavaScriptからSilverlightアプリケーション内のオブジェクトに アクセスするには、getElementByIdメソッドを使用する getElementByIdメソッドの引数は、createSilverlight()関数で指定した SilverlightオブジェクトのID(例えば、”SilverlightControl”) JavaScript function ClickMe() { var agCtrl=document.getElementById(“SilverlightControl”); agCtrl.content.findName(“elipse1”).fill=“yellow”; } Silverlight 1.0 アプリケーション開発 4.Expression Encoder を使用した動画配信 アプリケーションの 作成(カスタマイズ) Silverlight アプリケーションを効率良く 開発するには • Expression Studio、Visual Studioなどの開発 ツールを使用 • 開発ツールにより自動生成するコードをカスタ マイズ • 公開されているサンプルアプリケーションをカ スタマイズして使用 Visual Studio 動画配信アプリの作成(カスタマイズ) 作成手順 1. Expression Encoderの入手 2. 動画素材の準備 3. Expression Encoderによる作業 “Media Content”ウィンドウの”Import”ボタンをクリック、メディアファイルを指定 “Metadata”タブを選択、チャプターを設定したい位置にビデオのタイムラインを合わせる “Markers”ウィンドウ内の”Add”ボタンをクリック、作成されたMarkerの”Value”をわかりやすい名前に置き換える サムネイル画像が必要な場合は、”Thumbnail”フィールドをチェックする “Output”タブを選択し、同タブ内の”Thumbnail”ウィンドウ内でサムネイルに使用する画像として”1st Frame”を選択 “Job Output”ウィンドウの”Template”ドロップダウンリストから”Expression (Silverlight RC)”(任意のもの)を選択 “Encode”ボタンをクリックしてエンコード開始、結果として、動画配信アプリケーションが作成される C:\Users\<UserName>\Documents\Expression\Expression Encoder\Output\<HOST NAME> 2007-11-03 21.09.27\Default.html 4. デザインを変更したい場合は、player.xamlをオープンしてデザイン を変更 5. 再生するwmvファイル、チャプターなどの変更は、StartPlayer.js内 のget_mediainfo関数の内容を変更する ※直接、Expression EncoderからSilverlight Streamingに発行可能 Silverlight 1.0 アプリケーション開発 5.Page Turnサンプル アプリケーションの利用 (カスタマイズ) http://silverlight.net/themes/silverlight/community/gallerydetail.aspx?cat=3 PageTurnサンプルアプリのカスタマイズ 作成手順 1. Page Turnサンプル(プロジェクト)の入手 2. 入手したサンプルプロジェクトのdefault.htm.js内のcreateSilverlight関数を以下の ように記述しなおす function createSilverlight() { var scene=new PageTurn(18); Silverlight.createObjectEx({ source: “xaml/scene.xaml”, parentElement: document.getElementById(“SilverlightControlHost”), id: “SilverlightControl”, properties: { width: “900”, height: “740”, version: “1.0” background: “black” }, events: { onLoad: Silverlight.createDelegate(scene, scene.handleLoad) } }); } 3. Webサーバに配置し、動作確認 PageTurnサンプルアプリのカスタマイズ カスタマイズ方法 1. 表示したい画像ファイルを準備する。ファイル名は、page数字.jpg とする。 表紙は“SilverlightBackgroundLight.jpg”、裏表紙は “SilverlightBackgroundDark.jpg”とする。 2.default.htm.jsのcreateSilverlight関数内で以下を用意した画像数 (ページ数)にあわせて変更 var scene = new PageTurn(使用するページ数); 3. pageGenerator.jsのPageGenerator定義内のfor文の初期値を1に変更 する for (var i=1; i <= this.numPages; i++) 4. Webサーバに配置し、動作確認
© Copyright 2025 ExpyDoc