[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.49,0:00:03.27,Default,,0000,0000,0000,,唷呼!另一個動畫 Dialogue: 0,0:00:03.27,0:00:05.50,Default,,0000,0000,0000,,這次我們有顆球在螢幕上移動 Dialogue: 0,0:00:05.50,0:00:07.24,Default,,0000,0000,0000,,而你們知道這是如何辦到的 Dialogue: 0,0:00:07.24,0:00:10.30,Default,,0000,0000,0000,,我們的變數"x"代表這顆球的位置 Dialogue: 0,0:00:10.30,0:00:14.06,Default,,0000,0000,0000,,另一個變數"速度"代表這顆球每次移動的距離 Dialogue: 0,0:00:14.06,0:00:15.46,Default,,0000,0000,0000,,及熟悉的繪圖迴圈 Dialogue: 0,0:00:15.46,0:00:17.42,Default,,0000,0000,0000,,用來重新繪製每一次的背景 Dialogue: 0,0:00:17.42,0:00:20.45,Default,,0000,0000,0000,,設定填充顏色並在x位置畫一個橢圓形 Dialogue: 0,0:00:20.45,0:00:21.38,Default,,0000,0000,0000,,且每一次 Dialogue: 0,0:00:21.38,0:00:23.56,Default,,0000,0000,0000,,我們要將x改回舊的x值 Dialogue: 0,0:00:23.56,0:00:26.25,Default,,0000,0000,0000,,再加上"速度" 這個變數 Dialogue: 0,0:00:26.25,0:00:32.79,Default,,0000,0000,0000,,所以若我使"速度"減小\N球移動的速度就慢一點 Dialogue: 0,0:00:32.79,0:00:35.58,Default,,0000,0000,0000,,也可以使"速度"為負數,則球向後移動 Dialogue: 0,0:00:35.58,0:00:38.49,Default,,0000,0000,0000,,或使它為零,則球會停止移動 Dialogue: 0,0:00:38.49,0:00:40.52,Default,,0000,0000,0000,,但只要速度不為零 Dialogue: 0,0:00:40.52,0:00:43.75,Default,,0000,0000,0000,,最終球將會移到螢幕外 Dialogue: 0,0:00:43.75,0:00:46.20,Default,,0000,0000,0000,,我可以按重新開始鍵把它帶回來 Dialogue: 0,0:00:46.20,0:00:49.76,Default,,0000,0000,0000,,但你知道,一段時間後,就膩了 Dialogue: 0,0:00:49.76,0:00:52.47,Default,,0000,0000,0000,,重來,再重來 Dialogue: 0,0:00:52.47,0:00:55.75,Default,,0000,0000,0000,,所以何不試試這個?當球觸及螢幕右邊邊界時 Dialogue: 0,0:00:55.75,0:00:58.78,Default,,0000,0000,0000,,與其像現在這樣超出螢幕的邊界 Dialogue: 0,0:00:58.78,0:01:00.50,Default,,0000,0000,0000,,我想讓它轉個彎 Dialogue: 0,0:01:00.50,0:01:06.52,Default,,0000,0000,0000,,而且,我知道如何讓球轉彎\N我只需要說:"速度"為負5 Dialogue: 0,0:01:06.52,0:01:10.24,Default,,0000,0000,0000,,若我使速度為負,則球會向後走 Dialogue: 0,0:01:10.24,0:01:11.74,Default,,0000,0000,0000,,但這有個問題 Dialogue: 0,0:01:11.74,0:01:18.25,Default,,0000,0000,0000,,我只想在當球觸及右邊邊界時,\N才去改變速度的值 Dialogue: 0,0:01:18.25,0:01:19.95,Default,,0000,0000,0000,,我想我已經說了 Dialogue: 0,0:01:19.95,0:01:25.76,Default,,0000,0000,0000,,我只想在球觸及右邊邊界時,\N才去改變速度的值 Dialogue: 0,0:01:25.76,0:01:27.74,Default,,0000,0000,0000,,我想這裡需要一個if述句 Dialogue: 0,0:01:27.74,0:01:29.61,Default,,0000,0000,0000,,到目前為止,我們只下達 Dialogue: 0,0:01:29.61,0:01:32.02,Default,,0000,0000,0000,,電腦無論如何就去執行的指令 Dialogue: 0,0:01:32.02,0:01:33.100,Default,,0000,0000,0000,,if述句是一種方式去說: Dialogue: 0,0:01:33.100,0:01:36.26,Default,,0000,0000,0000,,「嘿,夥計,我要你去執行這個程式碼 Dialogue: 0,0:01:36.26,0:01:39.04,Default,,0000,0000,0000,,但僅只在這些特定的條件下。」 Dialogue: 0,0:01:39.04,0:01:43.02,Default,,0000,0000,0000,,「所以,只有當球已觸及右邊邊界時,才改變速度」 Dialogue: 0,0:01:43.02,0:01:45.10,Default,,0000,0000,0000,,而這是它在程式碼中看起來的樣子 Dialogue: 0,0:01:45.10,0:01:47.54,Default,,0000,0000,0000,,你要做的就是打上"IF" Dialogue: 0,0:01:47.54,0:01:50.96,Default,,0000,0000,0000,,一對小括號,一對大括號 Dialogue: 0,0:01:50.96,0:01:54.33,Default,,0000,0000,0000,,在小括號內,填入條件 Dialogue: 0,0:01:54.34,0:01:57.76,Default,,0000,0000,0000,,在大括號內,填入要執行的程式碼 Dialogue: 0,0:01:57.76,0:02:00.52,Default,,0000,0000,0000,,它運作的方式是:\N「若此條件為真, Dialogue: 0,0:02:00.52,0:02:04.02,Default,,0000,0000,0000,,則執行此程式碼;\N否則,就不執行。」 Dialogue: 0,0:02:04.02,0:02:07.51,Default,,0000,0000,0000,,在我們的例子中,條件指的是\N球觸及右邊邊界 Dialogue: 0,0:02:07.51,0:02:10.37,Default,,0000,0000,0000,,我們如何得知\N球是否已觸及右邊邊界呢? Dialogue: 0,0:02:10.38,0:02:14.21,Default,,0000,0000,0000,,我們有變數x,告訴我們球的位置 Dialogue: 0,0:02:14.21,0:02:22.96,Default,,0000,0000,0000,,且我知道畫布邊緣的x位置為400\N所以來看一下 Dialogue: 0,0:02:22.96,0:02:26.26,Default,,0000,0000,0000,,當x大於400時 Dialogue: 0,0:02:26.26,0:02:30.30,Default,,0000,0000,0000,,則我們知道球已經些微超過右邊邊界 Dialogue: 0,0:02:30.30,0:02:31.99,Default,,0000,0000,0000,,來看一下那是如何運作的 Dialogue: 0,0:02:31.99,0:02:38.98,Default,,0000,0000,0000,,再來看要執行的程式碼,我們之前已經說過,\N我們改變速度,使之為負5。 Dialogue: 0,0:02:38.99,0:02:42.25,Default,,0000,0000,0000,,我們來看看按重新開始會發生什麼事 Dialogue: 0,0:02:42.25,0:02:46.24,Default,,0000,0000,0000,,這次,當球觸及右邊邊界時,\N它彈回來了!耶! Dialogue: 0,0:02:46.24,0:02:47.51,Default,,0000,0000,0000,,然後持續走到螢幕外 Dialogue: 0,0:02:47.51,0:02:49.77,Default,,0000,0000,0000,,但沒關係,我們可以對另一邊做相同的事 Dialogue: 0,0:02:49.77,0:02:52.67,Default,,0000,0000,0000,,這一次,我們想確認球是否已觸及左邊邊界 Dialogue: 0,0:02:52.67,0:02:57.96,Default,,0000,0000,0000,,也就是當x小於零時 Dialogue: 0,0:02:57.96,0:03:03.48,Default,,0000,0000,0000,,而我們想做的是使速度再次為正,\N於是指定速度為5 Dialogue: 0,0:03:03.96,0:03:07.02,Default,,0000,0000,0000,,好了,然後我們按下重新開始 Dialogue: 0,0:03:07.02,0:03:10.77,Default,,0000,0000,0000,,而這次...........蹦.......... Dialogue: 0,0:03:10.77,0:03:14.42,Default,,0000,0000,0000,,蹦...........蹦.......... Dialogue: 0,0:03:14.73,0:03:17.48,Default,,0000,0000,0000,,耶!成功了 Dialogue: 0,0:03:17.48,0:03:20.27,Default,,0000,0000,0000,,我們來檢查看看球是否已經超出邊界 Dialogue: 0,0:03:20.27,0:03:23.78,Default,,0000,0000,0000,,它好像有一點超出邊界 Dialogue: 0,0:03:23.78,0:03:27.06,Default,,0000,0000,0000,,如果你記得,這兩個參數控制 Dialogue: 0,0:03:27.06,0:03:29.50,Default,,0000,0000,0000,,橢圓形中心點的位置 Dialogue: 0,0:03:29.50,0:03:33.18,Default,,0000,0000,0000,,而現在,當中心點觸及邊界的同時 Dialogue: 0,0:03:33.18,0:03:36.75,Default,,0000,0000,0000,,一半的橢圓形已經超出邊界 Dialogue: 0,0:03:36.75,0:03:40.23,Default,,0000,0000,0000,,所以若我們想修正它,只需早一點使橢圓形停止 Dialogue: 0,0:03:40.23,0:03:45.73,Default,,0000,0000,0000,,邊界在400這裡,\N而我們希望當橢圓形到這裡時停止 Dialogue: 0,0:03:45.73,0:03:52.52,Default,,0000,0000,0000,,可以從功能呼叫知道橢圓形寬為50 Dialogue: 0,0:03:52.52,0:03:58.63,Default,,0000,0000,0000,,那表示從中心點到邊緣為25 Dialogue: 0,0:03:58.63,0:04:03.48,Default,,0000,0000,0000,,所以我們希望當中心點到達375時停止 Dialogue: 0,0:04:03.48,0:04:05.77,Default,,0000,0000,0000,,也就是400減去25 Dialogue: 0,0:04:05.77,0:04:08.23,Default,,0000,0000,0000,,代替檢查x是否大於400 Dialogue: 0,0:04:08.23,0:04:10.97,Default,,0000,0000,0000,,我們改為檢查x是否大於375 Dialogue: 0,0:04:10.97,0:04:13.29,Default,,0000,0000,0000,,代替檢查x是否大於0 Dialogue: 0,0:04:13.29,0:04:16.02,Default,,0000,0000,0000,,改為檢查x是否小於25 Dialogue: 0,0:04:16.99,0:04:21.28,Default,,0000,0000,0000,,現在超完美的!耶!\N看看球彈跳的樣子