マウスに合わせて
2010/10/10
やっほー、光だよ!
Silverlightっていえば、やっぱ動きがないとね。
・hajimete02.html -- ブラウザから直接見る、HTMLページだね。
最初の2つ、hajimete02.html と Silverlight.js は、前回とほとんど同じだね。・Silverlight.js -- Silverlightを使うときに必要な、お約束。 ・hikaru1.xaml -- Xaml 「ザムル」です。 ・myScript.js -- マウスの動きが書いてある JavaScript。 大きな違いは、HTMLファイルの最初の方に、
<script type="text/javascript" src="myScript.js"></script>
っていう1行が追加されてるってこと。ここに、今回新しく加わった myScript.js が埋め込まれてるね。
次に、Xamlファイル、hikaru1.xaml の中身を見てみると、画像の表示の仕方が書いてありまーす。
<Image Width="600" Height="450" Source="hikaru1.jpg"/>
こんな風に、Image の後に、幅、高さ、ファイル名を書くと、画像が表示できるの。その下に、 <Ellipse で始まるタグがあるでしょ。
<Ellipse x:Name="top"
Width="20" Height="20" Fill="#FF00FF" Canvas.Left="400" Canvas.Top="160"
これは、円を描くやり方なんだ。そのまんま日本語に直すと、MouseEnter="content_focus" MouseLeave="content_out" />
<Ellipse x:この円の名前="top"
幅="20" 高さ="20" 中身の色="#FF00FF" 横の位置="400" 縦の位置="160"
ざっとこんな意味。幅と高さを変えると楕円になるよ。マウスが入ったときは="content_focus" マウスが離れたときは="content_out" /> ここで大事なのは、
MouseEnter="content_focus" MouseLeave="content_out"
ってところ。この、マウスが入ったときと、マウスが離れたときのことは、どうなっているのかな〜っていうと、 実は、今回新しく増えた myScript.js ってところに書いてあるんだ。
myScript.js の中身を見ると、
// マウスが入ったときの動作
っていうのと、function content_focus(sender, arg)
// マウスが離れたときの動作
っていうのがあるよね。function content_out(sender, arg) これが、それぞれマウスが入ったときと、離れたときの動きになっているんだ。
さて、サンプル画面には上と下の、2つの赤マルがあるよね。
上のマルが <Ellipse x:Name="top"
ってなってるよ、わかるかな〜。下のマルが <Ellipse x:Name="under" ここで1つ問題、 「マウスが入ったときに、上のマルに入ったのか、下のマルに入ったのか、どうやって見分けているのでしょうか?」 答、「名前で見分けている」。 上のマルには"top"っていう名前が付いていて、下のマルには"under"っていう名前が付いているよね。 myScript.js の中を見てみると、
if( sender.Name == "top" ){
ってあるでしょ。これは、「もし名前が"top"だったら」っていう意味なんだよ。 つまり"sender.Name"っていうところに、実際にマウスが入ったマルの名前が入ってくるんだね。
じゃあ、もう1つ問題。
<Image x:Name="silver_logo"
そんでもって myScript.js の中で「ロゴマークさん、出てきてくださ〜い!」って呼び出すのは、<Image x:Name="punsuka"
var img = hikaru1.content.findName( "silver_logo" );
って感じにするんだ。こうすると、img のところにロゴマークさんが入ってくるの。 で、ロゴマークさんを出したり引っ込めたりするには、「Opacity」ってのを使います。 「Opacity」っていうのは、透明度のこと。 Opacity = 1.0 で 100% 見えていて、 Opacity = 0.5 なら半分シースルー、 Opacity = 0.0 で全然見えなくなっちゃいます。 ・・・ってことは〜、
・まず最初は Opacity = 0.0 にしておいて、全然見えなくしておく。(hikaru1.xml)
こんなことをしてたんだ!・マウスが入ったら、Opacity = 1.0 にして、見えるようにする。(myScript.js の content_focus) ・マウスが出て行ったら、また Opacity = 0.0 に戻して、見えなくなる。(myScript.js の content_out)
マウスにあわせた動き、わかってくれたかな〜? |