カメラ制御とプレイヤー操作によるキャラクターの動きを制御します。まとまった時間がほしい・・・。
]]>タグ: Silverlight
[XAML] 数字で始まるフォルダを作成して埋め込まれたリソースをいれるとパスがかわる
ちょっとハマってしまったのでメモ。
ソリューションのフォルダ構成で「XXXX/YYYY/000_ZZZZ」みたいなフォルダを作り、「000_ZZZZ」フォルダの中にリソース(XAMLとかmp3とか)を入れていました。リソースは「埋め込まれたリソース」として登録し、実行時に動的に読み込むようにしました。
この場合は「Assembly.GetManifestResourceStream」メソッドで読み込むことになるのですが、パス指定では以下の注意点が挙げられます。
- パス区切り文字は「. (ピリオド)」になる
- パスの最初に「名前空間」をいれ、ピリオドを挟んだ後プロジェクトのルートからの相対パスを書く
- 大文字小文字は区別される
一応これらを注意して書いたのですが、実行時にどうしても null が返ってきてしまいます。
どうしてもわからなかったので「Assembly.GetManifestResourceNames()」メソッドで中身を調べてみたところフォルダのパスが「XXXX.YYYY._000_ZZZZ」のようになっていて数字から始まっているフォルダ名の最初に「_ (アンダースコア)」が追加されていました。とりあえず読込パスを同じようにアンダースコアを入れてみたところ正常に読む込むことができました。
ハマりそうなので注意が必要ですね。
]]>
Tips 追加
sorceryforce.net の方で Tips 追加しました。少し Tips が増えてきたので少しグルーピングしようかなーと思ってますが、まだ実装できていないのでもうしばらくしたらやります。Tips は一部ブログから書き直して転載しているものもあります。
- ScrollViewer でマウスホイールを有効にする方法
- Excel でセルに値を貼り付けた後に表示される貼り付けオプションを非表示にする
- Windows ログオン時にアプリケーションを管理者権限で実行する
- Excel でテーブルとして書式設定を解除
]]>
ドメイン間ポリシーファイルの配置場所
Silverlight や Flash などのアプリケーションが提供されたドメインと異なる URL の Web サービスを使用するには「ドメイン間ポリシーファイル」が「Web サービス側」に配置されている必要があります。(Silverlightドメイン間ポリシー(clientaccesspolicy.xml)や Flashドメイン間ポリシー(crossdomain.xml))
イントラネットワーク内のサイトで提供している Web サービスでも同様でドメイン間ポリシーファイルを配置する必要がありますが、配置する場所は必ずホスト名直下の URL で取得できる位置に配置する必要があります。(例:http://<サーバー名>/clientaccesspolicy.xml など)
IIS などで同じポートで複数のアプリケーションを配置するために Default Web Site の下にアプリケーションを作成する場合があると思いますが、その場合も個々のアプリケーションごとにドメイン間ポリシーファイルを配置するのではなく、Default Web Site が使用している物理フォルダ (デフォルト「C:inetpubwwwroot」)に配置する必要があります。
]]>Silverlight でファイル選択ダイアログ、または保存ダイアログを表示する前にブレークポイントを挿入してデバッガーを起動するとエラーになる
意外とはまるのでメモ。
Visual Studio を使っているとブレークポイントを使ってプログラムの流れをチェックすることはよくあると思いますが、Silverlight で同様にブレークポイントでデバッガーを立ち上げた状態でファイル選択ダイアログなどのコモンダイアログを表示させようとすると SecurityException がスローされます。
同じことを書くのも面倒なので詳しいことは下記のリンク先を参照してください。
ファイル選択、ファイル保存、印刷ダイアログはそれぞれクライアント PC に直接影響するので Silverlight アプリケーション以外でのプロセスでローカルリソースにアクセスするのはだめということみたいです。リソースに影響しないメッセージボックスは例外はスローされません。
]]>