2012-01-29
ぐぬぬシリーズその1:FloatingTileSample
ぐぬぬシリーズです!
ぐぬぬシリーズとは、TLかなんかで ”ふぇぇ。。出来ないよぉ。。” って見かけたネタの中から
「それBlendでノンコーディングでできるよ!0から始めるのネタにしちゃおう!」なんて思ったものの、
やってみたらちょっとでもC#を書かないと実装できなくて、
ってなったネタです!
ぐぬぬ。。。!なので0から始める〜みたいに細かい解説はしません。
代わりに、なぜBlendで出来なかったとなるC#の部分の説明と、プロジェクトファイルを載せます。自分で読んでみてください。
また、Blendだけでもっとスマートにできるぜ!って方は、実現して是非ご一報ください。
■作ったもの
ドラッグしている間、タイルが浮いてるように見えるデザインです。
デモページ
http://c-mitsuba.com/temp/FloatingTileSample/SilverlightApplication14/Bin/Debug/TestPage.html
■C#
private void gridControl_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { var gc = new gridControl(); gc = (gridControl)sender; gc.SetValue(Canvas.ZIndexProperty,1); mask.Visibility = Visibility.Visible; } private void gridControl_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { var gc = new gridControl(); gc = (gridControl)sender; gc.SetValue(Canvas.ZIndexProperty,0); mask.Visibility = Visibility.Collapsed; }
■Blendだけで出来ないわけ
動的にZIndexPropertyの操作はコードから書かないとできませんでした。
ChangePropertyActionはそのコントロール自身が持っているプロパティのみ有効です。
ZIndexはGridやCanvasなどパネル的なコントロールが子要素に対して付加するプロパティなので、ダメなんです。
いや、本当はホストしている画面のStoryboardからは操作できるので、表示するgridControlの数*2つ(MouseDown時に1、Up時に0)のStoryboardを書けば可能なのですが、ちょっとスマートじゃないですね。
[StoryboardからZIndexをいじれる。]
ちなみに、タイルみたいなコントロールはCustomControlです。
ドラッグ時とノーマル時のアニメーションをVSMで作っています。
中のStateの切り替えはChangeStateActionで行なっています。
ドラッグ時に表示される影は画像で作っているので、Effectが使えないWPでも今回の表現は実現可能です。
■プロジェクトファイル
- 63 http://android.dtmm.co.jp/device/4862
- 42 http://d.hatena.ne.jp/is01next/20120125/1327500968
- 36 http://d.hatena.ne.jp/is01next/
- 14 http://www.google.com/search
- 12 http://www.google.co.jp/url?sa=t&rct=j&q=icsonis01&source=web&cd=1&ved=0CCwQFjAA&url=http://d.hatena.ne.jp/c-mitsuba/20120125/1327488310&ei=B2YlT_LNKo28iAfgtLibBA&usg=AFQjCNGY1lFsrVHSkuEJTvDKnzYIR3ltrA&sig2=v4B7BUydvENSYIXwCL9_-w
- 10 http://www.rairaiken.org/?p=1553
- 7 http://smileplus.coolblog.jp/archives/1088/
- 7 http://www.google.co.jp/url?sa=t&rct=j&q=メタセコイア mac&source=web&cd=2&ved=0CDkQFjAB&url=http://d.hatena.ne.jp/c-mitsuba/20090630/1246293984&ei=GukkT8-PE-uciAff1JygBA&usg=AFQjCNH5m3bkmConFUaFeS0tc
- 7 http://www.google.co.jp/url?sa=t&rct=j&q=iphone 音楽 再生できない&source=web&cd=1&sqi=2&ved=0CDAQFjAA&url=http://d.hatena.ne.jp/c-mitsuba/20100629/1277749951&ei=R7MkT8H5MeSZiAfi-umhBA
- 6 http://bit.ly/yMZNu2




