控制何時執行腳本
您可以透過下列方式控制何時在 Microsoft Expression Blend 應用程式中執行腳本:
建立觸發程序,以在發生事件時 (如按一下按鈕) 執行腳本;或如果您的腳本位於控制項範本中,則是在屬性變更時執行腳本。
注意事項: Microsoft Silverlight 1.0 或 Silverlight 2 專案無法使用觸發程序。
在程式碼後置檔案中建立事件處理常式方法,以呼叫腳本的 Begin 方法。
您也可以使用這些方法來控制腳本何時停止、暫停、繼續、移除本身,或跳至腳本結尾。
這些方法會隨您作業的範圍而略有不同。
注意事項: |
---|
下列程序參照包含視覺動畫的腳本。但是,這些程序也可以套用至音訊或視訊腳本。如需詳細資訊,請參閱將影像、音訊或視訊檔案插入至使用中的文件。 |
文件主要範圍中的腳本
如果腳本將是您文件的主要功能,請在文件的主要範圍中建立腳本,然後再透過使用者與也位於文件主要範圍中的控制項互動,以觸發腳本。在 Expression Blend 中,當您在主文件的範圍中建立腳本時,會自動建立新的觸發程序,以在載入應用程式視窗時,執行您的腳本。您可以在 [互動] 面板的 [觸發程序] 下檢視此觸發程序。
建立腳本時由 Expression Blend 設定的預設觸發程序
若此觸發程序維持不變,即會在應用程式啟動時執行腳本。或者,您可以藉由使用下列程序修改此行為。
使用事件觸發程序控制文件主要範圍中的腳本
如果當您建立腳本時,為 Window.Loaded 事件建立了預設觸發程序,且不想要在應用程式啟動時執行腳本,請在 [觸發程序] 下選取 Window.Loaded。否則,請按一下 [新增事件觸發程序] 按鈕,建立新的預設事件觸發程序。
在 [物件與時間軸] 下,選取與其互動時會執行腳本的物件。例如,若要在使用者的指標移至文字區塊上時執行腳本,請選取文字區塊。
使用 [觸發程序] 窗格下半部的下拉式功能表,變更觸發動畫的事件 (Window.Loaded)。例如,將 [當 Window.Loaded 引發時] 變更為 [當 textblock.MouseEnter 引發時]。
定義觸發事件時將執行的動作。若未列出任何動作,請按一下 [新增動作] 按鈕。請確定將動作設為腳本的名稱 (例如 [Storyboard1]),且呼叫的方法為 [Begin]。或是選取對腳本有效的任一方法。如需詳細資訊,請參閱新增或移除觸發程序。
使用事件處理常式方法控制文件主要範圍中的腳本
如果當您建立腳本時,為 Window.Loaded 事件建立了預設觸發程序,且不想要在應用程式啟動時執行腳本,請在 [觸發程序] 下選取 Window.Loaded,然後執行下列一項動作:
如果 [觸發程序] 視窗下半部列有多項動作,則選取控制腳本的動作 (例如 [Storyboard1.Begin]),然後按一下旁邊的 [刪除此動作] 按鈕。
如果列出的唯一動作是控制腳本的動作,則可以按一下 [刪除觸發程序] 按鈕,刪除整個觸發程序。
在 [物件與時間軸] 下,選取與其互動時會執行腳本的物件。例如,若要在使用者的指標移至文字區塊上時執行腳本,請選取文字區塊。
在 [屬性] 面板中,按一下 [事件] 按鈕。會以字母順序顯示所選取元素的所有可用事件清單。
秘訣: 若要查看事件的簡短描述,請將指標移到事件名稱的上方。工具提示會顯示事件描述。您也可以在 WPF 事件快速參照中查看可用事件及其描述的清單。
尋找想要新增程式設計邏輯的事件 (例如 [MouseEnter] 事件)。
您可以使用兩種方式產生空的事件處理常式方法:
按兩下事件名稱旁邊的文字區塊。Expression Blend 會產生事件處理常式方法的預設名稱,並將該名稱輸入至文字區塊中,並會產生空白方法的程式碼。
在事件名稱旁的文字區塊中鍵入名稱,然後按下 ENTER 鍵,或按一下其他任意位置,將焦點移離文字區塊。事件方法名稱的開頭必須是英文字母。如果程式碼後置檔案中還沒有此方法名稱,則 Expression Blend 會為空白方法產生程式碼,並使用您所鍵入的名稱。
注意事項: 即使已安裝 Microsoft Visual Studio 2008,還是可以設定 Expression Blend 使用剪貼簿。請在 [工具] 功能表上按一下 [選項],然後按一下 [事件處理常式]。在 [編輯經驗] 之下按一下 [只用剪貼簿]。
接著,Expression Blend 會執行下列一項動作:
如果已安裝 Visual Studio 2008 Standard Edition 或更新的版本,則 Expression Blend 會在 Visual Studio 2008 中開啟專案,並開啟程式碼後置檔案,然後將其內容貼到空的事件處理常式方法中。
注意事項: 如果您同時安裝 Visual Studio 2008 和 Visual Studio 2005,可能會在 Visual Studio 版本選擇器嘗試開啟 Visual Studio 2005,而非 Visual Studio 2008 時,收到錯誤訊息。這是因為 Expression Blend 建立的 Visual Studio 2008 專案無法在 Visual Studio 2005 中開啟。若發生此情況,請在 Visual Studio 2008 中開啟您的專案,再嘗試在 Expression Blend 的 [屬性] 面板中建立事件處理常式。
如果未安裝 Visual Studio 2008 Standard Edition 或更新的版本,則 Expression Blend 會將空的事件處理常式方法複製到剪貼簿,並顯示快顯視窗,說明後續可執行的動作。在此情況下,您可以使用其他文字編輯器手動開啟程式碼後置檔案,將方法貼到視窗的類別定義中 (如下所示):
private void TextBlock_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { }
Private Sub textBlock_MouseEnter(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs) End Sub
注意事項: 如果您已將應用程式 (例如記事本) 對應至 .cs 或 .vb 檔案,則在 [專案] 面板的 [檔案] 之下按兩下程式碼後置檔案的名稱,即可手動開啟該檔案。Expression Blend 會隨即在該應用程式中開啟該檔案。
如果未將任何應用程式對應至 .cs 或 .vb 檔案,則 Expression Blend 就無法從外部開啟檔案。若要開啟檔案,請在 [Windows 檔案總管] 中找到該檔案 (或者,如果已在 Expression Blend 中儲存專案,則請按一下 [專案] 功能表上的 [瀏覽專案]),並以滑鼠右鍵按一下想要修改的 .cs 或 .vb 檔案,接著選取 [開啟檔案],然後選取 [記事本] (或另一種編輯應用程式)。執行此作業之後,就可以從 Expression Blend 的 [專案] 面板中手動開啟程式碼後置檔案。
在開啟程式碼後置檔案並貼入事件處理常式方法後,就可以開始將下列粗體程式碼新增至事件處理常式方法中。
private void TextBlock_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { Storyboard myStoryboard; myStoryboard = (Storyboard)this.Resources["Storyboard1"]; myStoryboard.Begin(this); }
Private Sub textBlock_MouseEnter(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs) Dim myStoryboard As New Storyboard myStoryboard = CType(Me.Resources("Storyboard1"), Storyboard) myStoryboard.Begin(Me) End Sub
儲存所有檔案,然後按 F5 鍵以建置並測試您的應用程式。例如,在執行的應用程式中,將滑鼠移到文字區塊上方,查看動畫是否會開始。
注意事項: 如果當您再次將滑鼠移至文字區塊上方時,您的動畫無法返回起始點,這可能是因為您未將主要畫面格設定在 0 秒標記上。
控制項範本及樣式中的腳本
Microsoft Expression Blend 有時會為您建立腳本,例如當您修改控制項範本,而將動作新增至屬性觸發程序或事件觸發程序時。如需有關如何處理樣式及範本的詳細資訊,請參閱樣式與範本。
控制範本範圍中的腳本
使用下列其中一種方法開啟樣式或範本以進行修改:
注意事項: 若想瞭解是要使用樣式或範本,請參閱樣式及範本概觀。
注意事項: 某些物件不支援範本,例如路徑物件。[Button] 或 [RadioButton] 等控制項支援範本。
若要建立新範本,請在 [物件與時間軸] 下選取畫板上的物件,然後在 [物件] 功能表中按一下 [編輯控制項組件 (範本)],然後選取 [編輯複本]。[建立樣式資源] 對話方塊會隨即顯示。選取想要定義資源的位置,然後按一下 [確定]。如需詳細資訊,請參閱建立樣式資源。
若要建立新樣式,請在 [物件與時間軸] 下選取畫板上的物件,然後在 [物件] 功能表中按一下 [編輯樣式],然後選取 [編輯複本]。[建立樣式資源] 對話方塊會隨即顯示。選取想要定義資源的位置,然後按一下 [確定]。如需詳細資訊,請參閱建立樣式資源。
若要開啟現有的範本,請按一下 [資源] 面板中樣式旁的 [編輯資源] 按鈕,然後在 [物件與時間軸] 下以滑鼠右鍵按一下 [Style] 元素,按一下 [編輯控制項組件 (範本)],然後選取 [編輯範本]。或是選取已套用自訂樣式的控制項,然後在 [物件] 功能表中按一下 [編輯控制項組件 (範本)],然後選取 [編輯範本]。
若要開啟現有的樣式,請按一下 [資源] 面板中樣式旁的 [編輯資源] 按鈕。或是選取已套用自訂樣式的控制項,然後在 [物件] 功能表中按一下 [編輯樣式],然後選取 [編輯樣式]。
若要修改 Expression Blend 隨附的其中一個簡單樣式,請從 [工具箱] 中開啟 [資產庫] ,依序按一下 [控制項] 索引標籤及 [簡單樣式] 資源字典,選取預先設定樣式的控制項,將控制項拖曳至畫板上使 [Simple Styles.xaml] 資源字典可以在 [資源] 面板中使用,然後使用上述其中一個選項開啟簡單樣式或範本。修改目前專案中的 [Simple Styles.xaml] 資源字典並不會影響其他專案中的 [Simple Styles.xaml] 資源字典,除非您將 [Simple Styles.xaml] 檔案從目前的專案複製到其他專案。
當您位於樣式或範本的編輯範圍時,新的 Expression Blend 2 階層連結列會出現在畫板的頂端。
已選取範本編輯模式的階層連結列
按一下階層連結列上的按鈕,可讓您在所選物件的範本編輯模式、樣式編輯模式及物件編輯範圍之間快速切換。任何套用自訂樣式或範本的所選物件,都會出現階層連結列。
在 [物件與時間軸] 下,按一下 [新增] 按鈕。
[建立腳本資源] 對話方塊會隨即顯示。
輸入名稱並按一下 [確定]。[建立腳本資源] 對話方塊會隨即關閉,且 Expression Blend 會進入時間軸錄製模式。
建立特定動畫,只影響正在編輯之樣式或範本中的物件。
注意事項: 您無法以動畫顯示正在修改的範本或樣式以外之物件。但是,您可用動畫顯示樣式或範本中的現有物件。此外,修改範本時,您可以將 [範本] 節點下的項目加以分組,置入版面配置面板 (如 [格線]),然後將更多物件新增至格線,再於其中以動畫顯示。
執行下列一項動作,觸發新腳本:
若要將腳本新增至現有的屬性觸發程序,請在 [互動] 面板的 [觸發程序] 下選取觸發程序,然後在 [觸發程序] 窗格的下半部,根據您要在啟用觸發程序時執行腳本,還是在停用時執行,按一下 [啟用時的動作] 或 [停用時的動作] 旁之 [新增動作] 按鈕。新的腳本會自動新增為啟用觸發程序時會發生的動作。
若要將腳本新增至新的屬性觸發程序,請按一下 [新增屬性觸發程序] 按鈕,然後在 [觸發程序] 窗格下半部,將觸發程序從預設的 [target-element.IsCancel = False] 變更為所需的屬性與值 (例如 [target-element.IsPressed = True]),然後按一下 [新增動作] 按鈕。新的腳本會自動新增為引發事件時會發生的動作。
若要將腳本新增至新的事件觸發程序,請按一下 [新增事件觸發程序] 按鈕,然後在 [觸發程序] 窗格下半部,將觸發程序從預設的 [當 target-element.Loaded 引發時] 變更為所需的事件 (例如 [當 target-element.Click 引發時]),然後按一下 [新增動作] 按鈕。新的腳本會自動新增為引發事件時會發生的動作。
重要: 一律選取 [預設] 觸發程序來關閉觸發程序錄製模式,再對範本進行一般變更。否則,可能會不小心變更現有的觸發程序。
警告: 在修改樣式及範本時,有可能會破壞套用樣式或範本之系統控制項的功能。如需注意事項清單,請參閱樣式及範本概觀的<最佳作法>一節。
儲存所有檔案,然後按 F5 鍵以建置並測試您的應用程式。
如需修改範本更特定的範例,請參閱試試看:將動畫新增至按鈕。
使用者控制項中的腳本
透過將腳本置入使用者控制項中,您可以將物件和以動畫顯示物件的腳本封裝成一個 XAML 文件和程式碼後置檔案。然後,您可以多次在其他文件中初始化使用者控制項。
控制使用者控制項中的腳本
執行下列一項動作,以建立並開啟使用者控制項以進行編輯:
在 [檔案] 功能表上選取 [新增項目]。在 [新增項目] 對話方塊中,選取 [UserControl] 並設定 [名稱],然後按一下 [確定]。
建立一個動畫腳本,並以動畫顯示使用者控制項中的部分物件。
您現在可以藉由使用事件觸發程序或事件處理常式方法,在文件主要範圍中的腳本下使用任何一項工作控制動畫。
注意事項: 如果建立物件的事件觸發程序,再使用 [製作控制項] 命令將物件轉換成使用者控制項,則必須在此使用者控制項的範圍中重新建立事件觸發程序。這是因為使用者控制項範圍中可使用的事件,與主文件範圍中可使用的事件不同。例如,您可以使用 [Storyboard1.Begin] 等動作設定 [當 UserControl.MouseDown 引發時] 等事件。當您使用 [製作控制項] 命令時,資源和動畫會重整為新的控制項,因此您無須重新建立。
注意事項: 如果先建立了物件的事件處理常式方法,再使用 [製作控制項] 命令將物件轉換成使用者控制項,則事件處理常式方法程式檔不會從主文件的程式碼後置檔案中移至使用者控制項的程式碼後置檔案中。這是因為可能有其他使用相同事件處理常式方法的物件。您可以複製事件處理常式方法,並貼到使用者控制項的程式碼後置檔案中。
Silverlight 1.0 應用程式中的腳本
Silverlight 1.0 應用程式中的腳本是資源,且和 Silverlight 1.0 中的所有資源一樣會由名稱識別,而不是像在 Windows Presentation Foundation 應用程式中是由索引碼識別。
控制 Silverlight 1.0 應用程式中的腳本
Silverlight 2 應用程式中的腳本
可使用事件處理常式或狀態來控制 Silverlight 2 應用程式中的腳本。
控制 Silverlight 2 應用程式中的腳本
在事件處理常式中,請使用下列程式碼:
private void TextBlock_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { Storyboard myStoryboard; myStoryboard = (Storyboard)this.Resources["Storyboard1"]; myStoryboard.Begin(); }
在狀態中,新增狀態變更後播放的動畫。