朱 彥
最近同事用Authorware制作《云房子》課件,碰到一個難題,從素材庫中找到一段現成的云朵變化的Flash動畫,而這段動畫是完整而連貫的,但腳本要求云朵的每次變化必須暫停,學生描述后,再由教師控制繼續(xù)播放。同事不想重新制作這段Flash,問我有沒有辦法在Authorware中控制Flash的播放。
我想了想,Authorware提供了三個函數:SetSpriteProperty主要是將某些屬性賦予動畫(如:動畫的尺寸、位置等);GetSpriteProperty主要是獲取動畫的某些屬性(如:旋轉角度、播放速度和當前幀等);CallSprite主要是控制動畫內在的某些行為(如:播放和暫停等)。用這幾個函數便可以和Flash動畫進行通訊,從而實現控制Flash的目的。于是,給出如下方案,很好地解決了這一難題。
1.在流程線上插入Flash動畫,命名為“Cloud”。
2.在“Cloud”圖標下插入一個顯示圖標,在空白處寫上顯示變量的文字:{GetSpriteProperty(@"Cloud",#frame)},并將顯示圖標的屬性中的Update Displayed Variables一項選中。然后播放,變量數值會隨動畫的播放不斷增加,記下需要暫停的地方所顯示的數值。一切記錄完畢,將這個顯示圖標刪掉,這樣我們就知道動畫需要暫停的地方所在的幀數,如圖1所示。
3.在“Cloud”圖標后面放置一交互圖標,并添加一個條件分支,用此不斷偵測Flash動畫的播放情況。條件分支的觸發(fā)條件為GetSpriteProperty(@"Cloud",#frame)>=暫停幀數,Automatic設為When True,Branch設為Exit Interaction,其中暫停幀數根據第2步中記錄的數值進行修改。這樣當Flash動畫播放到指定的幀數時便會進入條件分支內。
4.暫停播放Flash。在條件分支中的計算圖標內寫上一句:CallSprite(@"Cloud",#stop),通過調用函數來停止動畫播放,并退出交互。
5.繼續(xù)播放Flash。在等待圖標后插入一計算圖標,寫上一句:CallSprite(@"Cloud",#play),使Flash動畫繼續(xù)播放。
6.需要暫停幾次,只要重復3~5步即可,如圖2所示。
當然,如果為了省事,也可只設“暫停”和“播放”兩個按鈕,由教師靈活控制,但這樣教師上課時就必須抓好暫停時機,如有疏忽,則會影響教學計劃,因此我們按腳本要求將暫停的地方固定下來,以方便教師使用。