blog
告知: Silverlightセミナー。
僭越ながら、5月28日開催のSilverlightセミナーでトークセッションに参加させていただくことになりました。
Visual Studio Robot開発時の裏話を、開発中の画面を交えながらしようと思っています。
当日はお土産もあるようなので、是非参加してみてください。
http://www.creativevillage.ne.jp/pec/seminar_forum/detail?id=1085
近況。
先月終わり頃からAppleのダウンロードサイトでDashboardウィジェットのピックアップに取り上げていただき、おかげさまで多くの方に訪問していただいています。どうもありがとうございます。全然更新してなくてすいません。
まだまだIn the Moodの使い勝手を良くしたいとも考えていますが、最近はすっかりSilverlightでの開発に身をやつしています。
ちょこちょこと備忘録にも書いてきたSilverlightですが、XAMLというXMLベースのマークアップ言語で記述するだけでかなり滑らかなアニメーションもできて、当初思っていたよりも面白いですね。
とはいえ、複雑なコンテンツを作るにはやはりそれなりのツールが必要になってくるんですが、Macだけでは環境が整わず、Windowsも併用しなければならないのが悩みの種です。
そんなこんなで制作しているSilverlightコンテンツの記事が、CGWORLD 5月号にちょっとだけ掲載されました。興味のある方はご覧になってみてください。
備忘録: Silverlightプラグインのアンインストール。
Windowsでは「プログラムの追加と削除」からアンインストールできるが、Mac OS Xでは以下のファイルを手動で削除して、ブラウザを再起動する。
/Library/Internet Plug-Ins/Silverlight.plugin
備忘録: Silverlightプラグインの挙動の違い。
- Windows/IE:
HTML要素を重ねても、Silverlightコンテンツが最前面に来る。
改めてやってみたら問題なかった。 - Windows/Firefox:
Silverlightコンテンツ同士を重ねると、例え静止していても重なった部分がちらつく。 - Mac OS X/Safari:
特に問題はない。
SilverlightコンテンツにHTML要素を重ねると、テキストは前面になるが背景がSilverlightコンテンツより背面になってしまう。
スタイルにposition:absoluteを設定すればOK。 - Mac OS X/Firefox:
opacityスタイルを1以外に設定したHTML要素と領域が重なると、どちらが上にあるかに関わらずSilverlightコンテンツの内容が表示されない。
重なっている部分だけでなく、1ピクセルでも重なっていると全体が表示されない。
音は聞こえるのでストーリーボード自体は再生しているみたい。
元々半透明のpngは重なっても問題ない。
追記: 2008.02.19
Silverlightコンテンツの上にHTML要素を重ねるとき、HTML要素のスタイルにposition:absoluteを設定するとどのブラウザでも問題ない。備忘録: Silverlightでローディング中にプログレスバーを表示するために。
Downloading Content on DemandDownloaderオブジェクトを使えば、指定したファイルを何%読み込んだかを取得したり、読み込み完了時のイベントを拾えたりするが、XAMLファイルを指定してもそこに記述されているリソースまでは含まれない(XAMLファイルを読み込み終わった時点でcompletedイベントが発生してしまう)。
この場合は、XAMLファイルとそれが参照しているリソースをZIPアーカイブにしておいて、DownloaderオブジェクトでZIPアーカイブを読み込むようにする。
追記: 2008.02.11
ZIPアーカイブ内の各リソースは、XAMLファイルでSourceを指定してあっても、DownloaderオブジェクトのcompletedイベントハンドラでいちいちSetSourceを呼んで関連づけないといけない。function ContentLoaded(sender, args)
{
var content = sender.getHost().content.createFromXamlDownloader(
sender, "main.xaml"
);
sender.findName("container").children.add(content);
content.findName("img01").setSource(sender, "images/img01.jpg");
content.findName("bgm01").setSource(sender, "sounds/bgm01.mp3");
}
このとき、MediaElement(オーディオとかビデオ)オブジェクトにXAML上でSourceを指定してあると、SafariやMac版のFirefoxでは何故か再生されない(MediaFailedが発生する)ので、空にしておかないといけない。(Imageオブジェクトは問題ない)
<MediaElement x:Name="bgm01" Source="" AutoPlay="False"/>