久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

ActionScript菜鳥基礎(chǔ)終極教程6

 關(guān)東老圃 2013-03-30
完成對按鈕的創(chuàng)建后,,可以單擊舞臺上方的場景名“場景1”回到主場景。
  按F1或Ctrl+L打開庫面板,,你將看到庫中增加了一個按鈕,,用鼠標將它拖到舞臺中。

  4.2.2 為按鈕添加腳本
  要為按鈕添加腳本,,首先得選中該按鈕,,然后按F9鍵打開動作面板。你也可以在該按鈕上單擊鼠標右鍵,,在彈出的快捷菜單中選擇“動作”命令,,這樣也可以打開按鈕的動作面板。
  在專家模式下輸入如下腳本:
  on (release) {
  trace("You are cliking me!");
  }
  按鈕的腳本有特殊的語法,,即必須以關(guān)鍵字on開頭,,以on開頭的代碼是一種事件處理函數(shù),即當特定事件發(fā)生時要執(zhí)行的代碼,。在這里,,特定事件就是release(松開鼠標),它是按鈕最常用的事件,。
  按鈕事件還有press,、releaseOutside、rollOver,、rollOut,、dragOver、dragOut以及keyPress等,。press是按下鼠標事件,,它在release事件之前發(fā)生,releaseOutside是在按鈕上按下鼠標,,并且在按鈕外松開鼠標的事件,,rollOver是鼠標指針移到按鈕所在熱區(qū)的事件,rollOut是鼠標從按鈕熱區(qū)移出的事件,,dragOver是在鼠標指針位于按鈕上方并已按下按鈕的情況下,,滑出按鈕再滑回按鈕的事件,dragOut是當鼠標指針位于按鈕內(nèi)部,,按下按鈕然后滾動出按鈕區(qū)域的事件,,keyPress是按鈕響應(yīng)在鍵盤上按下某些鍵時的事件,。
  某種事件的發(fā)生,會觸發(fā)相應(yīng)事件處理函數(shù)開始運行,,上例中使用trace語句將事件信息發(fā)送到輸出窗口中,,使你可以更好地了解具體按鈕事件的含義。

  4.3 練習:演示文檔
  用Flash可以實現(xiàn)演示文檔的功能,,演示文檔相當于我們常說的幻燈片,,它可以進行逐頁展示。如果不使用腳本,,F(xiàn)lash動畫會很快地播放每一幀,,要用Flash制作演示文檔就得對Flash添加控制命令。
  我們用腳本使每一幀停止,,要跳轉(zhuǎn)到別的幀,,就需要使用按鈕。
  制作演示文檔的操作步驟如下:
 ?。?)啟動Flash MX,,編輯前5幀。
 ?。?)在文檔中創(chuàng)建5個按鈕,,從庫面板中可以看到它們。
 ?。?)打開主時間軸第1幀的動作面板,,其中添加了如下語句:
  stop();
  影片播放時,會停止在第一幀上,。
 ?。?)為圖層2的第1幀和第5幀分別添加幀標簽begin和end,如圖4-3所示,。

 

 

(5)選中第1幀中的“開始”按鈕,打開其動作面板,,在其中添加如下語句:
  on (release) {
  nextFrame();
  }
  單擊“開始”按鈕,,停止在第1幀的影片會跳轉(zhuǎn)到第2幀并停止。
 ?。?)分別在第2~4幀的相同位置添加按鈕“首頁”,、“上一頁”、“下一頁”,、“末頁”,。由于第5幀后面沒有別的幀,所以只添加“上一頁”和“首頁”兩個按鈕,。
 ?。?)為所有“首頁”按鈕添加腳本:
  on (release) {
  gotoAndStop("begin");
  }
  單擊“首頁”按鈕,,影片將跳轉(zhuǎn)到幀標簽為begin的那一幀并停止,即第1幀,。這里也可以用1替代"begin",。
  (8)為所有“上一頁”按鈕添加腳本:
  on (release) {
  prevFrame();
  }
  單擊“上一頁”按鈕,,影片將從當前幀跳轉(zhuǎn)到前一幀并停止,。
  (9)為所有“下一頁”按鈕添加腳本:
  on (release) {
  nextFrame();
  }
  單擊“下一頁”按鈕,,影片將從當前幀跳轉(zhuǎn)到下一幀并停止,。
  (10)為所有“末頁”按鈕添加腳本:
  on (release) {
  gotoAndStop("end");
  }
  單擊“末頁”按鈕,影片將從當前幀跳轉(zhuǎn)到幀標簽為end的那一幀并停止,,在此處也即是第5幀,。
  (11)按Ctrl+Enter鍵測試一下影片,,單擊各個按鈕試一下效果。這些添加了ActionScript的按鈕是不是變得非常聽話,?

  第5章
 
  控制影片剪輯

  影片剪輯是Flash中最重要的一種元件,,對影片剪輯的控制是ActionScript的最重要功能之一。從根本上說,,F(xiàn)lash的許多復(fù)雜動畫效果和交互功能都與影片剪輯的運用密不可分,。
  使用點語法或方括號可以定位影片剪輯。使用方括號時可以使用由變量表示的影片剪輯實例名,,這是它相對于點語法的優(yōu)點,。
  可以用腳本控制影片剪輯的各種動作,也可以在影片剪輯的事件處理函數(shù)中控制主時間軸和別的影片剪輯,。影片剪輯最重要的兩個事件是load和enterFrame,。

  5.1 控制影片剪輯的播放動作
  設(shè)想一個Flash動畫,它的主場景中只有一個幀,,舞臺中只有一個影片剪輯,,影片剪輯中并沒有ActionScript。如何才能控制影片剪輯的播放動作呢,?
  要控制一個影片剪輯,,首先應(yīng)該為影片剪輯命名。容易混淆的是,,庫面板中的影片剪輯本身有一個名稱,,這里要命名的是場景中影片剪輯實例的名稱。它們可以相同,也可以不相同,。如果你在場景中創(chuàng)建了同樣的影片剪輯的多個實例,,那么就需要將每個實例以不同的名稱命名,才能用ActionScript對每一個實例進行控制,。如果不需要對影片剪輯進行控制,,也就不需要為影片剪輯的實例命名。
  從本例文件中,,你將看到庫面板中只有一個影片剪輯rollmc,,場景中創(chuàng)建了一個rollmc的實例。你還可以再從庫中拖出若干個rollmc的實例將它們放置到場景中,。
  選中場景中影片剪輯rollmc的實例,,打開屬性面板,可以看到它被命名為roll,,你同時可以看到該影片剪輯原來的名字rollmc,,如圖5-1所示。你也可以為它指定別的名稱,,也可以是rollmc,,F(xiàn)lash并不會混淆它們之間的區(qū)別。 

實例名稱可以在程序中用來指代該影片剪輯實例,,如果要控制該實例,,就需要在腳本中使用該名稱。下面,,我們就來看看如何 通過腳本控制影片剪輯實例roll,。
  分別選中場景中的4個按鈕,打開它們的動作面板,,查看其中的代碼,。
  “STOP”按鈕:
  on (release) {
  roll.stop();
  }
  單擊“STOP”按鈕使roll實例停止播放。
  “PLAY”按鈕:
  on (release) {
  roll.play();
  }
  單擊“PLAY”按鈕使roll實例繼續(xù)播放,。
  “PREV”按鈕:
  on (release) {
  roll.prevFrame();
  }
  單擊“PREV”按鈕使roll實例回退一幀并停止,。
  “NEXT”按鈕:
  on (release) {
  roll.nextFrame();
  }
  單擊“NEXT”按鈕使roll實例播放一幀并停止。
  按Ctrl+Enter鍵測試影片,,如圖5-2所示,。一開始影片剪輯自動播放。單擊不同的按鈕看看影片剪輯是否執(zhí)行相應(yīng)的動作,。
  欣賞:http://www./UpLoadFile/20039912202632549.swf
  圖5-2 使用按鈕控制影片剪輯的播放動作
  除了這幾種命令,你還可以使用gotoAndStop或gotoAndPlay命令控制影片剪輯跳轉(zhuǎn)到具體的幀,,但是在命令前面都需要指定影片剪輯的實例名稱,。
  這種方法是在影片剪輯實例所在的層級中控制影片剪輯,如果是在影片剪輯內(nèi)部,要控制它自身的播放,,就可以直接使用stop,、play等命令,而不需要指定實例名稱,。如果你在影片剪輯內(nèi)部的時間軸中使用了名稱roll,,F(xiàn)lash會在影片剪輯內(nèi)部的時間軸中尋找該實例。

  5.2 定位影片剪輯
  我們已經(jīng)了解了如何使用最簡單的方法定位一個影片剪輯,,即使用影片剪輯的實例名,,后面緊跟一個點記號“.”,然后是你想要影片剪輯執(zhí)行的命令,。
  還有許多方法可以定位影片剪輯,。首先,我們來看看如何定位Flash影片中不同層級的對象,。
  Flash影片中最基本的目標層級就是它的主時間軸,。可以用關(guān)鍵字_root來表示和定位主時間軸,。
  例如,,你要向主時間軸發(fā)送一個gotoAndStop命令,可以使用如下所示的語句:
  _root.gotoAndStop(9);
  如果這個命令是包含在主時間軸的某一幀上的,,則可以省略目標_root,。如果這個命令是包含在主時間軸上某個影片剪輯中,需要由影片剪輯來控制它上一級的主時間軸,,_root就很有必要了,。
  通常,要定位包含某一對象的上一級對象,,可以使用關(guān)鍵字_parent,。所以,如果一個影片剪輯是包含在主時間軸中,,在影片剪輯中使用_parent和_root的效果是一樣的,。如果影片剪輯與主時間軸相差兩個層級,即當影片剪輯包含在另一個位于主時間軸中的影片剪輯中,,這時在該影片剪輯中使用_parent指代的是它上一級的影片剪輯,,而_root是指它上兩級的主時間軸。在主時間軸中不能使用_parent,,因為主時間軸沒有上一級,。
  可以用數(shù)字來方便地說明這種層級關(guān)系。主時間軸,,它始終是最初級,,作為層級0,。主時間軸中的一個影片剪輯處于層級1。如果影片剪輯中包含另一個影片剪輯,,它處于層級2,。對層級2上的影片剪輯來說,_parent指代的就是層級1上的影片剪輯,,而不管對哪一級來說,,_root始終指代層級0上的主時間軸。
  除了用點記號連接_root和實例名,,還可以使用方括號表示_root上的對象,。對上例中的按鈕“STOP”來說,如下所示的3種方法作用是一樣的:
  rool.stop();
  _root.roll.stop();
  _root["roll"].stop();
  還有一個關(guān)鍵字this,,它代表腳本當前所在的層級,。如果腳本位于主時間軸中,this即指代主時間軸,;如果腳本位于影片剪輯中,,this即指代該影片剪輯。所以以上語句還可以用以下兩種方式表示:
  this.roll.stop();
  this["roll"].stop();
  使用_root和this時還可以用變量來定位影片剪輯,,如下所示:
  var mcInsName = "roll";
  _root[mcInsName].stop();
  今后我們會遇到這種情況,,即有roll0~rool99共100個影片剪輯實例,可以使用下面的語句來控制它們:
  on (release) {
  for (var i = 0; i<100; i++) {
  _root["roll"+i].stop();
  }
  }
  多數(shù)情況下我們習慣使用_root,,但在某些情況下使用this比_root更簡便,。如要在某個影片剪輯中定位包含 在此影片剪輯中的另一影片剪輯childMC,就可以直接使用this.childMC,。

  5.3 為影片剪輯添加腳本
  現(xiàn)在你已經(jīng)知道如何向幀和按鈕中添加腳本,,下面需要知道如何向影片剪輯中添加腳本。
  要為影片剪輯添加腳本,,首先要選中影片剪輯,,再打開它對應(yīng)的動作面板,然后在其中輸入腳本,。影片剪輯腳本和按鈕的腳本類似,,它們都使用事件處理函數(shù),與按鈕的on關(guān)鍵字不同,,影片剪輯使用onClipEvent關(guān)鍵字,。當某種影片剪輯事件發(fā)生時,就會觸發(fā)相應(yīng)的事件處理函數(shù),。
  影片剪輯最重要的兩種事件是load和enterFrame,。
  load事件在影片剪輯完全加載到內(nèi)存中時發(fā)生。在每次播放Flash影片時,,每個影片剪輯的load事件只發(fā)生一次,。
  在主時間軸停止播放時,,影片中的影片剪輯并不會停止播放,,這個特性決定了影片剪輯的另一個事件enterFrame的重要性,。enterFrame事件在影片每次播放到影片剪輯所在幀時發(fā)生。如果主時間軸中只有一幀,,且不論它是否在該幀停止,,該幀中的影片剪輯都會不斷觸發(fā)enterFrame事件,且觸發(fā)的頻率與Flash影片的幀頻一致,。
  影片剪輯事件的使用方法如下所示:
  onClipEvent (load) {
  var i = 0;
  }
  onClipEvent (enterFrame) {
  trace(i);
  i++;
  }
  當影片剪輯的load事件發(fā)生時,,將變量i設(shè)置為0。當影片剪輯的enterFrame事件發(fā)生時,,向輸出窗口中發(fā)送i的值,,然后將i加1。輸出窗口中會從0開始輸出以1遞增的數(shù)字序列,,直到影片被關(guān)閉為止,。
  為了熟悉影片剪輯事件處理函數(shù)的用法,我們來為影片剪輯編寫一段簡單的腳本,,使影片剪輯逆序播放,,
  我們將從影片剪輯的最后一幀處開始播放,使用prevFrame命令使影片剪輯每次后退一幀,。
  本例文件場景中有一個影片剪輯元件rollmc,,查看一下它的屬性面板,并沒有為其實例命名,,這是因為我們要直接在影片剪輯的動作面板中添加腳本,,并不需要用到實例名稱。
  選中影片剪輯rollmc,,此時動作面板的標題欄中應(yīng)為“動作-影片剪輯”,。打開動作面板,其中添加了如下ActionScript:
  onClipEvent (load) {
  gotoAndStop(40);
  }
  onClipEvent (enterFrame) {
  prevFrame();
  }
  在事件處理函數(shù)onClipEvent (load)中,,令Flash影片的播放頭轉(zhuǎn)到影片剪輯的第40幀(即最后一幀),。這個事件處理函數(shù)只在影片剪輯被加載完成時執(zhí)行1次。第2個事件處理函數(shù)onClipEvent (enterFrame)每播放1幀就執(zhí)行1次,,使影片剪輯回退1幀,。
  按Ctrl+Enter鍵測試影片,你將看到齒輪以與上例相反的方向轉(zhuǎn)動,,直到影片剪輯的時間軸回到第1幀,,prevFrame命令不起作用,影片剪輯停止播放,。要讓它連續(xù)不斷的播放,,可以在影片剪輯元件rollmc的時間軸第1幀的動作面板中添加如下語句:
  gotoAndStop(40);

  5.4 用影片剪輯控制別的影片剪輯
  一個影片剪輯可以控制別的影片剪輯,。綜合使用_root或_parent關(guān)鍵字、點符號和影片剪輯實例名稱可以將命令發(fā)送給另一個影片剪輯實例,。例如,,在主時間軸上的影片剪輯實例roll1中添加如下腳本以控制同在主時間軸上的影片剪輯實例roll2回退1幀:
  _root.roll2.prevFrame();
  或者使用方括號表示如下:
  _root["roll2"].prevFrame();
  如果兩個影片剪輯不同在主時間軸上,而是同在別的層級上,,可以使用_parent關(guān)鍵字,。如果它們不同在一個層級上,也只需要使用點符號逐級標明所在的路徑即可,。
  下面綜合運用以上知識實現(xiàn)以影片剪輯控制另一個剪輯的播放動作,。
  (1)打開本例文件,。分別查看場景中的每一層,。按Ctrl+L打開庫面板。庫面板中有三個影片剪輯元件,,分別是hour,、minute和second。
 ?。?)分別雙擊每個影片剪輯元件,,查看它們的時間軸。
 ?。?)second元件的的時間軸共60幀,,secondhand圖形元件順時針旋轉(zhuǎn)1周。在第1幀中添加了如下ActionScript:
  stop();
  在最后1幀中添加了如下ActionScript:
  _root[target].nextFrame();
  gotoAndStop(1);
 ?。?)minute元件的的時間軸共60幀,,minutehand圖形元件順時針旋轉(zhuǎn)1周。在第1幀中添加了如下ActionScript:
  stop();
  在最后1幀中添加了如下ActionScript:
  _root[target].nextFrame();
  gotoAndStop(1);
 ?。?)hour元件的的時間軸共12幀,,hourhand圖形元件順時針旋轉(zhuǎn)1周。在第1幀中添加了如下ActionScript:
  stop();
 ?。?)回到主場景,,在屬性面板中為hour影片剪輯和minute影片剪輯指定了與元件名稱相同的實例名稱。
 ?。?)選中second元件實例,,打開其動作面板,其中添加了如下ActionScript:
  onClipEvent (load) {
  target = "minute";
  }
  onClipEvent (enterFrame) {
  nextFrame();
  }
 ?。?)選中minute元件實例,,打開其動作面板,其中添加了如下ActionScript:
  onClipEvent (load) {
  target = "hour";
  }
  以上腳本的原理是:使每個影片剪輯都在各自的第1幀停止,。在second的enterFrame事件中令其自身移到下一幀,。直到 second元件轉(zhuǎn)動完一周,,到達最后一幀,使用_root[target].nextFrame();命令將target所指目標后移1幀,,這里的target是在second影片剪輯實例的load事件中定義的,,也就是minute。同樣,,直到minute元件轉(zhuǎn)動完一周到達最后1幀,,使用_root[target].nextFrame();命令將target所指目標后移1幀,這里的target是在minute影片剪輯實例的load事件中定義的,,也就是hour。
  由于影片剪輯的轉(zhuǎn)動是由nextFrame命令實現(xiàn)的,,所以在每個元件內(nèi)部時間軸的最后1幀中添加了跳轉(zhuǎn)到第1幀的語句,,避免停止在最后1幀上。
  上面的ActionScript主要有兩種,,一種是在影片剪輯內(nèi)部時間軸上的幀腳本,,另一種是在主時間軸中的影片剪輯腳本。我們使用一個全局變量target記錄影片剪輯實例名稱,,這個動作是在影片剪輯的事件處理函數(shù)中完成的,,然后將這個全局變量應(yīng)用到影片剪輯內(nèi)部的幀腳本中。從這里也可以看到,,影片剪輯動作和影片剪輯內(nèi)部的幀動作是可以進行通信的,,全局變量在它們之間有效,但在兩個影片剪輯之間就變得無效,,所以我們可以在兩個影片剪輯中同時使用target而互不影響,。
  (9)按Ctrl+Enter測試影片,,如圖5-3所示,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多