Silverlight 3 アプリケーションをブラウザー外で実行すると、起動に少し時間がかかりますが、気になるほど長くはありません。この起動中、アプリケーションをホストしているウィンドウの背景には、醜い白い背景色が表示されます。ブラウザー内で実行するとスプラッシュ スクリーンが表示されますが、これはもちろん JavaScript を介して読み込まれます。ブラウザー外の Silverlight 3 でスプラッシュ スクリーンを動作させるにはどうすればよいですか? または、それが不可能な場合、少なくともウィンドウの背景色を変更できる方法はありますか?
2 に答える
私は実際にこれを行う方法を見つけました。万歳!このページにある文書には多くの功績があります。アプリケーションをディスクに配布していることに注意してください。これらの手順は、ユーザーが Web からインストールした Silverlight アプリケーションでは機能しません。
Silverlight ランチャーが最初に HTML ページをロードすることがわかりました。アプリケーションがインストールされる場所には、index.html ファイルがあります。このページには<object>
、Web 上で Silverlight をホストするために使用されるものと同様のタグが含まれています。
残念ながら、これ<object>
は Silverlight スプラッシュ スクリーンの XAML または進行状況インジケーターをサポートしていません。また、ページまたはの背景色を設定して<object>
も効果がないようです。ただし、Windows がすぐにプラグインの描画を開始するだけであることが判明したため、その間はデフォルトのウィンドウの色が表示されます。
これを回避するために、Silverlight をホストするvisibility
のを に設定しました。次に、HTML の下部に、タイマーを設定する を追加しました。タイマーが起動すると、 のが に変わり、Silverlight オブジェクトにフォーカスが与えられます。タイマーが 1 ミリ秒に設定されている場合でも、HTML のホストが Web ページの最初の描画を行う機会が与えられます。これにより、Silverlight の下にあるすべてのコンテンツが表示されます。<div>
hidden
<script>
visibility
<div>
visible
これが私のHTMLページ全体です:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<style type="text/css">
html, body { height: 100%; overflow: hidden; background-color: black; }
body { padding: 0; margin: 0; }
#silverlightControlHost
{
height: 100%; visibility: hidden; position: absolute;
}
#splashScreen
{
background-image: url('blah.png');
background-repeat: no-repeat;
width: 575px;
height: 330px;
top: 185px;
left: 212px;
color: white;
position: absolute;
font-family: Arial, Sans-Serif;
}
#loadingText
{
position: relative;
top: 165px;
text-align: center;
font-size: 18px;
}
</style>
</head>
<body scroll="no">
<div id="silverlightControlHost">
<object id='_sl' data="data:application/x-silverlight," type="application/x-silverlight" width="100%" height="100%">
<param name="source" value="offline://1931574666.localhost"/>
<param name="background" value="Black"/>
<param name="enableGPUAcceleration" value="True"/>
<a href="http://go.microsoft.com/fwlink/?LinkID=124807"
style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181"
alt="Get Microsoft Silverlight" style="border-style: none"/>
</a>
</object>
<iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
</div>
<div id="splashScreen">
<div id="loadingText">Loading. Please wait...</div>
</div>
<script>
setTimeout(
function() {
var ctrl = document.getElementById("silverlightControlHost");
ctrl.style.visibility = "visible";
document.getElementById('_sl').focus();
},
3000
);
</script>
</body>
</html>
残念ながら、Silerlight3はこれをカスタマイズする方法を提供していません。