標籤:
本周,上4年級的小孩開始學方程式,用到了代數。為了方便孩子理解,並學以致用,打算教他一點編程。
程式的選擇上不能太難,比如JAVA、C#應該不行,學習javascript應該行,但是會比較枯燥,於是決定讓他玩玩FLASH。雖然隨著HTML5 的興起,FLASH正在沒落,但FLASH卻簡單易懂,並且還能協助孩子畫畫。
這次編程選擇了飄雪花的程式,雖然簡單,但內容卻還比較全,涉及了:手動畫影片片段(MC),幀,actionscript,變數,隨機函數,函數方法,事件,時間等等。步驟:
1、FLASH CS6,建立“actionscript 3”,背景黑色。
2、插入“建立元件”(捷徑:Ctrl + F8),並要選擇“為ActionScript”匯出,目的是讓這個元件成為一個類。比如 類 名,我們可以起個:snow 。隨便用個鉛筆工具畫個“米”字形就行,稍微粗一點,還要用縮放工具縮小一些。顏色自然要用白色咯。
3、在第一幀中,加入背景(我沒加)。然後再加一層,按F9,彈出編程框(AS3要求編程不能和其他層共用一個層)。內容如下(含解釋):
import flash.utils.Timer; //前面的這2個斜杠,就是注釋的意思,表示其後內容不會別電腦識別。還有這行不用寫,因為在寫後面的Timer時,系統會自動寫for (var i:int=0; i<230; i++) { //迴圈的寫法,表示迴圈230次,每次增加 1 var mc:MovieClip=new snow(); //變數都是以 var 開頭。snow就是前面我們定義好了的mc的類。因為迴圈230次,這行就表示每次迴圈都要新生出來一個一模一樣的雪花 addChild(mc); //要想出現在影片中,就要用這個addChild添加進來。 mc.x=Math.random()*stage.stageWidth; //Math.random()表示隨機產生一個0到1之間的小數,stage.stageWidth是內建的屬性,表示本影片的寬度。所以本行就是定位雪花每次出現的X座標位置,且不會大於影片的總寬度。 mc.y=Math.random()*stage.stageHeight; //出現的Y座標。X/Y座標都是從左上方開始計數。 mc.scaleX=mc.scaleY=Math.random()*0.8+0.2; //縮放比例,表示是最小是原來的0.2倍,最大1倍。 mc.alpha=Math.random()*0.6+0.4; //透明度最小為40%,最大為100%。 mc.vx=Math.random()*2-1; //以上參數在點擊.之後都會自動出現,但這個vx和下面的vy卻不會出現,這是自訂的,你可以隨便寫作其他。表示每次下落的x/y位移量。 mc.vy=Math.random()*3+3; mc.name="mc"+i; //給每個雪花編一個名字,下面的程式好找。}//addEventListener(Event.ENTER_FRAME,snowP); //本來是這行,flash每秒大約是24幀,就是每1/24秒就執行這個叫snowP的函數。//addEventListener(MouseEvent.MOUSE_OVER,snowP); //和上行一樣,都是事件添加的方法。var timer1:Timer=new Timer(50); //為了精確控制時間間隔,用這個,表示沒50毫秒就執行一次。timer1.addEventListener(TimerEvent.TIMER,snowP); //這個添加時間的函數前,用到了執行個體化timer1。事件名字可以從編程框的左邊選擇。timer1.start(); //開始//function snowP(evt:Event):void { //這行是對應Event.ENTER_FRAME的function snowP(evt:TimerEvent):void { //和TimerEvent.TIMER對應 for (var i:int=0; i<230; i++) { var mc:MovieClip=getChildByName("mc"+i) as MovieClip; //根據上面定義的雪花名字來找到已經執行個體化的影片,as 是作為的意思。當你寫get後,可以點擊“顯示代碼提示”,就可顯示後面的內容,對腦子不好的人很好。 mc.x+=mc.vx; //每次左右位移一點,下面是往下一點。 mc.y+=mc.vy; if (mc.y>stage.stageHeight) { //如果雪花落到了影片的最下面之外,就從最上面從新開始。 mc.y=0; } if (mc.x<0||mc.x>stage.stageWidth) { //飄落到左右外,再隨機橫座標出現。 mc.x=Math.random()*stage.stageWidth; } }}
完成了,可以試試。
對上面的這個影片,可以把他們統統做成一個MC,這樣,大影片中,就可以嵌套這個小影片了,小影片演小影片的,大環境演大環境的。
這個網站的blog編輯器實在是無法說,系統老是出現許多亂碼,如:
</span><span style="font-family: Arial, Helvetica, sans-serif;">
導致我排版的時間比我寫文章的時間還長!
actionscript3寫飄雪花程式,為培養孩子編程興趣