2010-06-10 65 views
6

我一直在開發使用Silverlight 4和silversprite(http://silversprite.codeplex.com/)遊戲優化加載XAP文件與一個asp.net網站

這個遊戲在很大程度上依賴於內容,使用了大量的音頻和圖像。我的內容文件夾大約是90MB的東西。 因此,我的XAP文件大約爲60 MB,並且需要5分鐘才能從網站下載任何用戶開始播放。

我正在使用Visual Web Developer 2010創建我的站點並加載XAP。有沒有一種方法可以將我的XAP內容從我的ASP.net站點項目中提取出來?或者,也許上傳我的內容文件到網站的存儲? 這會讓我的XAP文件更快下載。

任何人都有建議嗎? 謝謝!

回答

3

Absolutley其被稱爲Application Library Caching。我已經非常成功地使用它,現在是一個標準的操作過程,特別好的是它的資源程序集。

直接從MSDN ...

資源文件一般是通過您的應用程序,如圖像,音頻和視頻文件所用的任何非可執行的數據文件。資源文件在特定的上下文中也可以有特定的含義。例如,在應用程序本地化的情況下,資源文件引用.resx文件,您可以將其部署在本地化的衛星組件中。在 應用程序包

•作爲單獨的文件:

繼續與一些真正有用的信息

使用Silverlight,您可以通過以下方式部署 資源文件。

•作爲單個文件,您可以根據需要檢索 。

•作爲應用程序包中嵌入程序集 中的文件。

•作爲嵌入程序集中的文件, 是一個外部庫包。

•作爲嵌入程序集中的文件,您可以根據需要檢索

這就是建議在其他的答案(S)

+0

這並不能真正幫助很多在這種情況下。當您的xap更改時,這是非常有用的,因爲現有的庫拉鍊保持靜態並且通常不需要再次下載。但是,如果它們從瀏覽器緩存中跳出,或者在第一次客戶端訪問時加載應用程序之前下載了所有的庫。如果Silverlight能夠確定哪些庫是需要的,那些不在啓動但不是啓動的庫會很好。 – AnthonyWJones 2010-06-10 21:48:34

+1

其實你可以創建你自己的庫(其中可以包含任何你想要的),並有框架處理緩存(不壞:)),周圍有,除非你你出去的瀏覽器或從請求更多的空間沒有其他辦法用戶都被JARING(和彪如此) – 2010-06-10 21:57:40

+0

也語法明智了很多友好的,你會使用爲您生成的資源包裝。 – 2010-06-10 22:00:08

4

是,在您的XAP只有內容,您需要對初始畫面。將其他內容放在其他XAP中(如果需要並理解清單xml)或者只是簡單的zip文件就可以。也許每個「級別」或任何其他郵編。

您可以使用WebClient下載郵編,然後使用StreamResourceInfoApplication.GetResourceStream訪問zip文件中的內容。

blog雖然老了一點,現在仍然帶有的基本思想,仍然是fundementally目前的技術使用。

+0

我已經看過這種方法,它看起來很棒!雖然我有一個特殊情況:我編程在Silversprite,不是純粹的Silverlight的:這意味着,我不編碼XAML文件中我的比賽。我的XAP包含一個純粹的C#.cs文件。 所以這是非常困難的。我在同一個解決方案中有一個網站項目和我的Silverlight(silversprite)項目。所以這就是我想知道的: 選項#1:在我的silersprite項目中,我使用了Texture2D.FromFile,並從我的外部網站加載紋理。 選項#2:我從我的WEBSITE項目引用並加載紋理。 有什麼建議? – theoneawaited 2010-06-11 18:08:20

+0

@thwoneawaited:無論您是使用Xaml還是主要使用C#,XAP的大部分都將是圖像,音頻等資源。我建議您將這些資源放在單獨的zip文件中。您可以使用諸如Texture2D.FromFile之類的方法從流中加載。該流依次使用'Application.GetResoureStream'獲取。 – AnthonyWJones 2010-06-12 12:18:53