2008年05月15日
Silverlight2.0 ではまった話
Silverlight 勉強会に備えて環境をそろえてみた。参考にしたのはこのへん。
MS公式のサンプルが動かない
ヘルプの CHM 版 の「Dynamic Languages in Silverlight 2」を参考にして触っていたんだけどエラーになる。
こんなエラー。
Silverlight error message ErrorCode: 4002 ErrorType: ManagedRuntimeError Message: Microsoft.Scripting.ArgumentTypeException: LoadRootVisual() takes exactly 1 argument (1 given) 場所 Microsoft.Scripting.Ast.Interpreter.ExecuteThrow(CodeContext context, ThrowStatement node) 場所 Microsoft.Scripting.Ast.Interpreter.EvaluateExpression(CodeContext context, Expression node) 場所 Microsoft.Scripting.Ast.Interpreter.Execute(CodeContext context, Expression expression)
エラーメッセージ、分かりにくすぎるよ…。
どうやらこのあたりが問題のようだ。
Import("System.Windows.Application") function App() { this.scene = Application.Current.LoadRootVisual("app.xaml") }
他のサンプルと見比べると LoadRootVisual は引数2ついるようだ。
検索してみた
2ch に同じ問題ではまってる人がいた。
366 :デフォルトの名無しさん:2008/03/07(金) 23:59:55 ヘルプの Dynamic Languages in Silverlight 2 に書いてある通りやったのに LoadRootVisual の引数の使い方がおかしいって怒られるぞ・・・ IronRuby, IronPython でもダメだ。ほんとに動くのか
動きません。
で、Silverlight2 Beta1を入れてみた - Programmable Life に解決方法を見つけた。JScript だと次のように修正する。
Import("System.Windows.Application") Import("System.Windows.Controls.Canvas") function App() { this.scene = Application.Current.LoadRootVisual(new Canvas(), "app.xaml") }
やっと動いた…。
自分は元々 Windows 開発者なので、MS のドキュメントは見慣れてるほうだと思うんだけど、それでも CHM ファイルのせいで2時間ぐらい苦しめられた。
もしや、と思って Web のドキュメントを参照したら、ちゃんと修正されていた。
CHM が間違ったまま放置されている…。最新版がどこかから手に入るのかなぁ。
まとめと雑感
- ドキュメントは最新のものを見よう
- Silverlight は難しい。AS3/Flex の方がドキュメントは分かりやすい。
- Silverlight のはてブ率の低さは異常。すごく優れたドキュメントの Silverlight 2 SDK+JavaScriptで無償の開発環境を作る #1 [環境整備編] (Neutral Scent) が2008年5月15日時点で 14users だなんて!
- Twitter 検索の Flex と Silverlight の RSS を購読してウォッチしてるんだけど、あきらかに Flex やってる人のほうが多い。ネット上では Flex のほうが流行ってきてる印象。スーツな世界では Silverlight のほうが強そうだけど。