小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ActionScript菜鳥(niǎo)基礎(chǔ)終極教程9

 關(guān)東老圃 2013-03-30
為影片剪輯添加鏈接后,就可以在動(dòng)作腳本中調(diào)用它,如下所示:
  attachMovie("blackchess", "chess1", 100);
  第1個(gè)參數(shù)即在庫(kù)面板中添加的鏈接名稱,第2個(gè)參數(shù)和第3個(gè)參數(shù)的意義和使用方法與duplicateMovieClip中相同位置的參數(shù)類似。
  在使用attachMovie方法將影片剪輯實(shí)例附加到場(chǎng)景中后,該實(shí)例將默認(rèn)出現(xiàn)在場(chǎng)景左上角,即坐標(biāo)原點(diǎn)的位置,所以仍然需要調(diào)整它的位置等屬性。

  7.1.4 刪除影片剪輯
  通過(guò)以上方法創(chuàng)建的影片剪輯實(shí)例都可以使用removeMovieClip動(dòng)作(動(dòng)作面板的“動(dòng)作”/“影片剪輯控制”目錄)或  MovieClip對(duì)象的removeMovieClip方法刪除,如下所示:
  n = 50;
  for (i=0; i  removeMovieClip(_root["childMC"+i]);
  }

  7.2 練習(xí):動(dòng)態(tài)添加影片剪輯
  本例是一個(gè)運(yùn)用了duplicateMovieClip和attachMovie命令的鼠標(biāo)跟隨特效動(dòng)畫(huà),
  本例使用attachMovie命令將魚(yú)附加到場(chǎng)景中的,使用duplicateMovieClip命令復(fù)制荷花影片剪輯以調(diào)整它的深度級(jí)別,使其保持在魚(yú)的上面。

該文件只有兩層,圖層1用來(lái)處理魚(yú),圖層2用來(lái)處理荷花。場(chǎng)景中只添加了荷花影片剪輯,它的實(shí)例名稱與元件名稱同為picMC。在庫(kù)面板中為魚(yú)的身體元件設(shè)置了鏈接,鏈接標(biāo)識(shí)符與元件名稱相同。
 ?。?)在圖層1的第1幀添加如下ActionScript:
  unit = 20; //魚(yú)的分段數(shù):20
  v0 = 12; //魚(yú)的游動(dòng)速度
  v1 = 2/3; //魚(yú)身緊驟程度
  v2 = 3; //魚(yú)身大小遞減速度
  var x = new Array(); //創(chuàng)建橫坐標(biāo)數(shù)組
  var y = new Array(); //創(chuàng)建縱坐標(biāo)數(shù)組
  for (i=1; i<=unit; i++) {
  if (i == 1) {
  attachMovie("head", "fish"+i, unit+1-i); //在第1節(jié)附加魚(yú)頭
  } else if ((i == 4) or (i == 13)) {
  attachMovie("fin", "fish"+i, unit+1-i); //在第4和13節(jié)附加魚(yú)鰭
  } else {
  attachMovie("body", "fish"+i, unit+1-i); //在其他節(jié)附加魚(yú)身
  }
  _root["fish"+i]._xscale = 50-v2*(i-1); //寬度遞減
  _root["fish"+i]._yscale = 60-v2*(i-1); //高度遞減
  _root["fish"+i]._alpha = 100-(100/unit)*i; //透明度遞減
  }
 ?。?)在圖層1的第2幀添加如下ActionScript:
  x[0] += (_xmouse-x[0])/v0;
  y[0] += (_ymouse-y[0])/v0;
  for (i=1; i<=unit; i++) {
  x[i] = x[i]+(x[i-1]-x[i])*v1;
  y[i] = y[i]+(y[i-1]-y[i])*v1;
  } //為數(shù)組元素賦值
  for (i=1; i<=unit; i++) {
  _root["fish"+i]._x = (x[i-1]+x[i])/2;
  _root["fish"+i]._y = (y[i-1]+y[i])/2;
  _root["fish"+i]._rotation = 90+180/Math.PI*Math.atan2((y[i]-y[i-1]), (x[i]-x[i-1]));
  } //確定魚(yú)身各節(jié)坐標(biāo)位置和旋轉(zhuǎn)方向
 ?。?)在圖層1的第3幀添加如下ActionScript:
  gotoAndPlay(2);
  該行語(yǔ)句令影片回到第2幀重新確定魚(yú)身各節(jié)的位置。
 ?。?)將荷花影片剪輯picMC拖放到圖層2,并在屬性面板中將其實(shí)例命名為picMC。選中該影片剪輯實(shí)例,在其動(dòng)作面板中添加如下ActionScript:
  duplicateMovieClip("picMC", "pic", 30);
  該行語(yǔ)句復(fù)制荷花,并將其深度級(jí)別設(shè)為30。因?yàn)樵隰~(yú)身各節(jié)中,魚(yú)頭的深度級(jí)別最高,為20,這里只要是一個(gè)大于20的數(shù)即可將荷花置于魚(yú)的上面。
 ?。?)按Ctrl+Enter測(cè)試影片。

  第8章

  響應(yīng)鍵盤(pán)

  有4種方法可以檢測(cè)鍵盤(pán)上的按鍵動(dòng)作。第1種方法是使用按鈕,第2種方法是使用Key對(duì)象,第3種方法是使用鍵盤(pán)偵聽(tīng),第4種方法是使用影片剪輯的keyUp和keyDown事件處理函數(shù)。

  8.1 通過(guò)按鈕檢測(cè)按鍵動(dòng)作
  在按鈕的on事件處理函數(shù)中不但可以對(duì)鼠標(biāo)事件作出響應(yīng),而且可以對(duì)鍵盤(pán)事件作出響應(yīng)。如在按鈕的動(dòng)作面板中加入如下所示的代碼,在敲擊鍵盤(pán)上的A鍵時(shí)輸出窗口中將提示:A is pressed。
  on (keyPress "a") {
  trace("A is pressed");
  }
  檢測(cè)鍵盤(pán)上的字母鍵時(shí),字母都應(yīng)為小寫(xiě)。如果要檢測(cè)鍵盤(pán)中的特殊鍵,如方向鍵,F(xiàn)lash中有一些專門(mén)的代碼來(lái)表示它們,如表8-1所示。
  表8-1 鍵盤(pán)中的特殊鍵
  
  
  
  如要檢測(cè)鍵盤(pán)上的鍵,可以使用下面的ActionScript:
  on (keyPress "") {
  trace("End is pressed");
  }
  您可以在一個(gè)按鈕中加入若干個(gè)on函數(shù),也可以在一個(gè)on函數(shù)中結(jié)合多種事件,這使您可以為按鈕定義快捷鍵,如下所示:
  on (release, keyPress "") {
  _root.myMC.prevFrame();
  }
  上面的語(yǔ)句實(shí)現(xiàn)單擊按鈕或按鍵盤(pán)上的左方向鍵,控制影片剪輯myMC回退1幀。

  8.2 影片剪輯的keyUp和keyDown事件
  影片剪輯包含兩個(gè)與鍵盤(pán)相關(guān)的事件keyUp和keyDown,使用它們也可以實(shí)現(xiàn)對(duì)按鍵事件的響應(yīng),如下所示:
  onClipEvent (keyDown) {
  trace(Key.getAscii());
  }
  函數(shù)Key.getAscii返回與按鍵相對(duì)應(yīng)的ASCII碼。ASCII碼是一個(gè)整數(shù),鍵盤(pán)上的每個(gè)字符對(duì)應(yīng)一個(gè)ASCII碼,如字母A對(duì)應(yīng)的ASCII碼為65,B對(duì)應(yīng)的ASCII碼為66,a對(duì)應(yīng)的ASCII碼為97, b對(duì)應(yīng)的ASCII碼為98,+對(duì)應(yīng)的ASCII碼為43等。只有字符才有ASCII碼,鍵盤(pán)上的功能鍵沒(méi)有ASCII碼。
  如果需要在輸出窗口中輸出與按鍵相對(duì)應(yīng)的字符,可以使用String對(duì)象的fromCharCode函數(shù)將ASCII碼轉(zhuǎn)換成字符,如將上例的trace命令改成如下所示:
  trace(String.fromCharCode(Key.getAscii()));
  String對(duì)象見(jiàn)動(dòng)作面板的“對(duì)象”/“核心”目錄下面。

  8.3 Key對(duì)象
  利用按鈕檢測(cè)按鍵動(dòng)作很有效,但是并不利于檢測(cè)持續(xù)按下的鍵,所以不適合于制作某些通過(guò)鍵盤(pán)控制的游戲。
  這時(shí),您就需要用到Key對(duì)象。Key對(duì)象包含在動(dòng)作面板的“對(duì)象”/“影片”目錄下面,它由Flash內(nèi)置的一系列方法、常量和函數(shù)構(gòu)成。使用Key對(duì)象可以檢測(cè)某個(gè)鍵是否被按下,如要檢測(cè)左方向鍵是否被按下,可以使用如下ActionScript:
  if (Key.isDown(Key.LEFT)) {
  trace("The left arrow is down");
  }
  函數(shù)Key.isDown返回一個(gè)布爾值,當(dāng)該數(shù)中的參數(shù)對(duì)應(yīng)的鍵被按下時(shí)返回true,否則返回false。常量Key.LEFT代表鍵盤(pán)上的左方向鍵。當(dāng)左方向鍵被按下時(shí),該函數(shù)返回true。
  Key對(duì)象中的常量代表了鍵盤(pán)上相應(yīng)的鍵,如表8-2所示。
  表8-2 Key對(duì)象中的常量
  Key.BACKSPACE Key.ENTER Key.PGDN
  Key.CAPSLOCK Key.ESCAPE Key.RIGHT
  Key.CONTROL Key.HOME Key.SHIFT
  Key.DELETEKEY Key.INSERT Key.SPACE
  Key.DOWN Key.LEFT Key.TAB
  Key.END Key.PGUP Key.UP
  以上是鍵盤(pán)上的功能鍵,那么如何表示鍵盤(pán)上的字母鍵呢?Key對(duì)象提供了一個(gè)函數(shù)Key.getCode來(lái)實(shí)現(xiàn)這一功能,如下所示:
  if (Key.isDown(Key.getCode("a"))) {
  trace("A is pressed");
  }

  8.4 鍵盤(pán)偵聽(tīng)
  假設(shè)在影片剪輯的onClipEvent(enterFrame)事件處理函數(shù)中檢測(cè)按鍵動(dòng)作,而影片剪輯所在的時(shí)間軸較長(zhǎng),或計(jì)算機(jī)運(yùn)算速度較慢,有可能出現(xiàn)這種情況,即當(dāng)在鍵盤(pán)上按下某個(gè)鍵時(shí)還未來(lái)得及處理onClipEvent(enterFrame)函數(shù),那么按鍵動(dòng)作將被忽略。
  還有一個(gè)問(wèn)題就是,在某些游戲(如射擊)中,我們需要按一次鍵就執(zhí)行一次動(dòng)作(發(fā)射一發(fā)子彈),即使長(zhǎng)時(shí)間按住某個(gè)鍵不放也只能算作一次按鍵,而Key對(duì)象并不能區(qū)別是長(zhǎng)時(shí)間按住同一個(gè)鍵還是快速地多次按鍵。
  在解決這個(gè)問(wèn)題,就需要用到Flash MX中的第3種方法:鍵盤(pán)偵聽(tīng)。when it comes to listening for key presses您可以使用 “偵聽(tīng)器(listener)”來(lái)偵聽(tīng)鍵盤(pán)上的按鍵動(dòng)作。
  要使用偵聽(tīng)器首先需要?jiǎng)?chuàng)建它,您可以使用如下所示的命令來(lái)告訴計(jì)算機(jī)您需要偵聽(tīng)某個(gè)事件:
  Key.addListener(_root);
  Key.addListener命令將主時(shí)間軸或某個(gè)影片剪輯作為它的參數(shù),當(dāng)偵聽(tīng)的事件發(fā)生時(shí)可以用這個(gè)參數(shù)指定的對(duì)象來(lái)響應(yīng)該事件。
  上面的代碼指定主時(shí)間軸來(lái)響應(yīng)該事件。要讓主時(shí)間軸對(duì)該事件作出響應(yīng),還需要設(shè)置一個(gè)相應(yīng)的事件處理函數(shù)。
  鍵盤(pán)偵聽(tīng)的事件處理函數(shù)有兩個(gè):onKeyUp和onKeyDown,如下所示:
  _root.onKeyUp = function() {
  trace(Key.getAscii());
  };
  您也可以使用影片剪輯作為偵聽(tīng)鍵盤(pán)的對(duì)象,只需要使用影片剪輯的路徑代替_root作為Key.addListener命令的參數(shù)。

  8.5 練習(xí):鍵盤(pán)控制影片剪輯
  文件如圖8-1所示,可以通過(guò)鍵盤(pán)上的方向鍵控制影片剪輯運(yùn)動(dòng)。當(dāng)敲擊空格鍵時(shí),瓢蟲(chóng)回到初始位置。

  點(diǎn)擊瀏覽該文件
 
  圖8-1 鍵盤(pán)控制影片剪輯
  文件ladybug.fla,其中包含了一個(gè)影片剪輯ladybug。在主場(chǎng)景中選中瓢蟲(chóng)影片剪輯,打開(kāi)其動(dòng)作面板,其中添加了如下  ActionScript:
  onClipEvent (load) {
  x0 = this._x;
  y0 = this._y;
  }
  onClipEvent (enterFrame) {
  if (Key.isDown(Key.SPACE)) {
  this._x = x0;
  this._y = y0;
  this._rotation = 0;
  }
  if ((Key.isDown(Key.LEFT)) && (Key.isDown(Key.UP))) {
  this._x -= 10/Math.SQRT2;
  this._y -= 10/Math.SQRT2;
  this._rotation = -45;
  } else if ((Key.isDown(Key.LEFT)) && (Key.isDown(Key.DOWN))) {
  this._x -= 10/Math.SQRT2;
  this._y += 10/Math.SQRT2;
  this._rotation = -135;
  } else if ((Key.isDown(Key.RIGHT)) && (Key.isDown(Key.UP))) {
  this._x += 10/Math.SQRT2;
  this._y -= 10/Math.SQRT2;
  this._rotation = 45;
  } else if ((Key.isDown(Key.RIGHT)) && (Key.isDown(Key.DOWN))) {
  this._x += 10/Math.SQRT2;
  this._y += 10/Math.SQRT2;
  this._rotation = 135;
  } else if (Key.isDown(Key.LEFT)) {
  this._x -= 10;
  this._rotation = -90;
  } else if (Key.isDown(Key.RIGHT)) {
  this._x += 10;
  this._rotation = 90;
  } else if (Key.isDown(Key.UP)) {
  this._y -= 10;
  this._rotation = 0;
  } else if (Key.isDown(Key.DOWN)) {
  this._y += 10;
  this._rotation = 180;
  }
  if (this._x>550) {
  this._x = 0;
  }
  if (this._x<0) {
  this._x = 550;
  }
  if (this._y>400) {
  this._y = 0;
  }
  if (this._y<0) {
  this._y = 400;
  }
  }
  當(dāng)敲擊空格鍵(Key.isDown(Key.SPACE))時(shí),影片剪輯回到初始位置;當(dāng)敲擊不同的方向鍵或方向鍵組合時(shí),相應(yīng)調(diào)整影片剪輯的_x、_y和_rotation屬性,從而實(shí)現(xiàn)以鍵盤(pán)控制影片剪輯。

第9章

  輸入文本和字符串

  Flash中的文本形式有3種,即靜態(tài)文本、動(dòng)態(tài)文本和輸入文本。輸入文本可以接受用戶輸入,這也是響應(yīng)鍵盤(pán)事件的一種。輸入文本是一種人機(jī)交互工具,輸入文本作為變量可以被ActionScript識(shí)別。
  有許多方法可以操縱String(字符串)對(duì)象,如使用運(yùn)算符“+”連接字符串,使用substring和substr函數(shù)從目標(biāo)字符串中截取子字符串,使用indexOf函數(shù)確定匹配字符串在目標(biāo)字符串中的位置等。

  9.1 輸入文本
  Flash中的文本形式有3種,即靜態(tài)文本、動(dòng)態(tài)文本和輸入文本。輸入文本可以接受用戶輸入,這也是響應(yīng)鍵盤(pán)事件的一種。
  3種形式的文本都是由文本工具 創(chuàng)建的,要?jiǎng)?chuàng)建輸入文本,首先要使用文本工具繪制一個(gè)文本框,然后在屬性面板中將該文本框的類型設(shè)置成輸入文本,如圖9-1所示,與輸入文本對(duì)應(yīng)的屬性面板如圖9-2所示。

 

  在輸入文本的屬性面板中,除可以設(shè)置一般的文本格式外,還可以單擊 按鈕將文本顯示為HTML格式,單擊 按鈕為文本添加邊框,在 后面的下拉列表框中設(shè)置文本的換行格式或?qū)⑽谋驹O(shè)置成密碼顯示。
  輸入文本最重要的是變量名,如圖9-2所示中的“變量”文本框,其中的myInputText即是該輸入文本的變量名。輸入文本變量和其他變量類似,變量的值會(huì)呈現(xiàn)在輸入文本框中,輸入文本框中的值同時(shí)也作為輸入文本變量的值,它們之間是等價(jià)的。
  如在場(chǎng)景中繪制了一個(gè)變量名為myInputText的輸入文本框,然后在主時(shí)間軸的幀動(dòng)作面板中添加如下ActionScript:
  Key.addListener(_root);
  _root.onKeyDown = function() {
  trace(_root.myInputText);
  };
  以上腳本創(chuàng)建一個(gè)鍵盤(pán)偵聽(tīng)器,當(dāng)按下鍵時(shí)即將輸入文本myInputText中的內(nèi)容顯示在輸出窗口中。測(cè)試一下您可以看到,輸出窗口不會(huì)漏掉輸入的每個(gè)字符,并且每輸入一個(gè)字符即輸出一行。

  9.2 字符串
  字符串是一種特殊類型的數(shù)據(jù),對(duì)字符串可以進(jìn)行多種操作。

  9.2.1 連接字符串
  要連接兩個(gè)字符串,可以使用“+”運(yùn)算符。如下所示:
  var myString = "Hello";
  myString += " World.";
  trace(myString);
  輸出窗口中將輸出如下所示的字符串:
  Hello World.
  您可以在一行ActionScript中使用多個(gè)“+”運(yùn)算符,如下所示:
  myStr1 = "How";
  myStr2 = "are";
  myStr3 = "you";
  myStr = myStr1+" "+myStr2+" "+myStr3+"?";
  trace(myStr);
  輸出窗口中將輸出如下所示的字符串:
  How are you?

  9.2.2 截取字符串
  從字符串中可以截取它的子字符串。例如,下面的腳本從字符串中截取第5到第14個(gè)字符組成的子字符串:
  myString = "ActionScript is so useful!";
  childStr = myString.substring(4, 14);
  trace(childStr);
  截取字符串函數(shù)substring有兩個(gè)參數(shù),第一個(gè)參數(shù)表示要截取的字符串的開(kāi)始位置,第2個(gè)參數(shù)表示要截取的字符串的結(jié)束位置。
  輸出窗口中輸出如下所示的子字符串:
  onScript i
  我們要截取的子字符串是從第5個(gè)開(kāi)始,為什么substring的參數(shù)中要從4開(kāi)始呢?這是因?yàn)樵贏ctionScript中,通常是從0開(kāi)始計(jì)數(shù)的,即上面的字符串中第0位上是A,第1位上是c,以此類推。那么既然從0開(kāi)始計(jì)數(shù),第14個(gè)字符就應(yīng)該是第13位,為什么第2個(gè)參數(shù)不是13而是14呢?這是因?yàn)閟ubstring的第2個(gè)參數(shù)是指要截取到的位置,即要截取的最后一個(gè)字符是它前面的一個(gè)字符,所以它應(yīng)該比要截取的最后一個(gè)字符多一位。
  還有一種方法可以截取字符串,這就是substr。substr與substring命令的區(qū)別在于substr的第2個(gè)參數(shù)代表要截取的子字符串的長(zhǎng)度。如下所示的ActionScript實(shí)現(xiàn)與前例相同的效果:
  myString = "ActionScript is so useful!";
  childStr = myString.substr(4, 10);
  trace(childStr);
  在輸出窗口中輸出子字符串:
  onScript I
  還有一個(gè)特殊的截取字符串的命令charAt。charAt可以從字符串的指定位置截取一個(gè)字符,如要從前面的字符串中截取第6位上的字符S,可以使用如下所示的ActionScript:
  myString = "ActionScript is so useful!";
  childStr = myString.charAt(6);
  trace(childStr);
  輸出窗口中將輸出字符S。

  9.2.3 字符串函數(shù)
  String對(duì)象有很多內(nèi)置函數(shù),使您可以對(duì)字符串進(jìn)行各種操作。
  indexOf方法用于從目標(biāo)字符串中查找另一字符串的索引,即與另一字符串相匹配的子字符串的起始位置。如下所示:
  myString = "Macromedia Flash MX";
  myStr = myString.indexOf("Flash", 0);
  trace(myStr);
  以上腳本從目標(biāo)字符串“Macromedia Flash MX”中查找字符串“Flash”的位置,運(yùn)行該腳本,輸出窗口中輸出11。
  如果目標(biāo)字符串中沒(méi)有找到相匹配的字符串,將返回-1。
  indexOf的第2個(gè)參數(shù)表示從目標(biāo)字符串中開(kāi)始查找的起始位置,前例中的0表示從目標(biāo)字符串的第1個(gè)字符開(kāi)始查找。該參數(shù)可以省略,將默認(rèn)從第1個(gè)字符開(kāi)始查找。
  與indexOf函數(shù)相對(duì)的是lastindexOf,用它查找在參數(shù)所指定的開(kāi)始位置之前的最后一個(gè)子字符串的索引,即逆序查找。如下所示:
  myString = "Macromedia Flash MX";
  myStr = myString.lastindexOf("a", 12);
  trace(myStr);
  運(yùn)行該腳本,輸出窗口中輸出9。
  如果將參數(shù)12改成13或更大的數(shù),或?qū)⒃搮?shù)省略,將返回結(jié)果13。
  String對(duì)象的toLowerCase函數(shù)實(shí)現(xiàn)將大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)形式,toUpperCase函數(shù)實(shí)現(xiàn)將小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)形式。如下所示:
  myString = "Macromedia Flash MX";
  myStr1 = myString.toLowerCase();
  myStr2 = myString.toUpperCase();
  trace("Original String : "+myString);
  trace("LowerCase String : "+myStr1);
  trace("UpperCase String : "+myStr2);
  運(yùn)行該腳本,輸出窗口中顯示:
  Original String : Macromedia Flash MX
  LowerCase String : macromedia flash mx
  UpperCase String : MACROMEDIA FLASH MX
  String對(duì)象只有一個(gè)屬性,即length,它表示字符串的長(zhǎng)度,即字符串中包含字符串的個(gè)數(shù),如下所示:
  myString = "Macromedia Flash MX";
  trace(myString.length);
  運(yùn)行該腳本,輸出窗口中顯示19,即該字符串中共19個(gè)字符。
  在使用String對(duì)象的函數(shù)和屬性時(shí)要注意,字母的大寫(xiě)形式和小寫(xiě)形式是有區(qū)別的,并且每個(gè)空格也作為一個(gè)字符。

  9.3 練習(xí):表單
  表單(form)在網(wǎng)頁(yè)中使用得非常頻繁,用戶可以通過(guò)表單與服務(wù)器進(jìn)行交互,從而實(shí)現(xiàn)注冊(cè)或登錄等操作。
  借助于輸入文本、按鈕以及ActionScript等,也可以用Flash來(lái)制作網(wǎng)頁(yè)中的表單。

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多