日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

Flash MX 2004新特性實(shí)例(3)_Flash教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:Flash MX 2004新特性實(shí)例(2)
實(shí)例二、BehaviorsScrapbook一、涉及特性此實(shí)例涉及的特性主要有兩個(gè):讀取圖片和設(shè)置Symbol的層次。不算是新增加的特性,但在性能方面的改進(jìn)還是比較大的。

實(shí)例三、Customizing Context Menu

  一、涉及特性

  這個(gè)實(shí)例反映了Flash MX 2004在編程方面的重大改進(jìn)。其中包括了as文件的應(yīng)用,系統(tǒng)的_global.$clipboard變量的使用,ContextMenu(menufun) 函數(shù)的調(diào)用,ContextMenuItem()函數(shù)的調(diào)用,已經(jīng)MovieClip.prototype.menu變量的使用。通過這幾個(gè)函數(shù)和變量的操作,就可以輕松地操作Flash Player中的菜單了。

  二、制作過程

  1、新建一個(gè)Action Script File,命名為“ClipBoard.as”,內(nèi)容如下:   

  /* Copyright 2003 Macromedia, Inc. All rights reserved.

  The following is Sample Code and is subject to all restrictions

  on such code as contained in the End User License Agreement

  accompanying this product.

  */   

  class ClipBoard extends Object{ //注釋1   

  static var $contents:Object; //注釋2

  static var $operation:String; //注釋3   

  function ClipBoard() {} //注釋4   

  static public function cut(obj) { //注釋5

  obj._alpha = 50; //注釋6

  $contents = obj; //注釋7

  $operation = "cut"; //注釋8

  }   

  static public function copy(obj) { //注釋9

  $contents = obj;

  $operation = "copy";

  }   

  static public function paste() { //注釋10

  if ($operation == "cut") { //注釋11

  $contents._x = _root._xmouse; //注釋12

  $contents._y = _root._ymouse;

  $contents._alpha = 100; //注釋13

  $contents = undefined; //注釋14

  $operation = ""; //注釋15   

  } else if ($operation == "copy") { //注釋16

  var newdepth = $contents._parent.getNextHighestDepth(); //注釋17

  var newname = $contents._name newdepth; //注釋18

  $contents.duplicateMovieClip(newname, newdepth); //注釋19

  $contents._parent[newname]._x = _root._xmouse; //注釋20

  $contents._parent[newname]._y = _root._ymouse;   

  $contents._alpha = 100;

  $contents._parent[newname]._alpha = 100;   

  } else {

  return; //注釋21

  }

  }   

  public function isEmpty():Boolean { //注釋22

  if ($contents != undefined) { //注釋23

  return false;

  } else {

  return true;

  }

  }  

  public function handleMenuCommand(obj, item):Void { //注釋24

  switch (item.caption) { //注釋25

  case "Cut object": //注釋26

  cut(obj);

  break;   

  case "Copy object": //注釋27

  copy(obj);

  break;   

  case "Paste object": //注釋28

  paste();

  break;

  }

  }

  }

 本實(shí)例有比較多的編程知識,剛接觸會(huì)有無從下手的感覺,下面來具體講解一下涉及的東西。

  注釋1:class的意思是定義一個(gè)類,extends是表示所定義的類的基類是Object。這個(gè)涉及到編程的面向?qū)ο�,可能比較難懂,可以把Object看成是所定義的類的父類,父類具有的方法和屬性,在子類中都是有的。

  注釋2:定義一個(gè)變量contents,類型為Object。Flash MX 2004中都是這樣定義變量的。在此處定義的變量,在整個(gè)類中都是可以用的。

  注釋3:定義一個(gè)變量operation,類型為String。

  注釋4:這是類的構(gòu)造函數(shù),所謂的構(gòu)造函數(shù)就是當(dāng)實(shí)例化這個(gè)類的時(shí)候所調(diào)用的函數(shù)。比如本類的實(shí)例化可以是這樣的:ClipBoard cb = new ClipBoard();

  注釋5:定義一個(gè)cut函數(shù),傳入的參數(shù)是obj,它的調(diào)用范圍是public,也即是任何類都可以調(diào)用。

  注釋6:設(shè)置傳入的obj的alpha屬性為50。

  注釋7:設(shè)置注釋2中所定義的變量的值為obj。

  注釋8:設(shè)置注釋3所定義的變量的值為“cut”。

  注釋9:定義一個(gè)copy函數(shù),傳入的參數(shù)是obj,調(diào)用范圍是public。

  注釋10:定義一個(gè)paste函數(shù),沒有傳入的參數(shù),調(diào)用范圍是public。

  注釋11:判定所定義的operation的值是否為“cut”。

  注釋12:設(shè)置contents的xy坐標(biāo)為鼠標(biāo)的xy坐標(biāo)。    

注釋13:設(shè)置contents的alpha為100。

  注釋14:利用完contents的值后,將contents的值重新設(shè)置為undefined。

  注釋15:將operation的值清空。

  注釋16:判定所定義的operation的值是否為“copy”。

  注釋17:定義一個(gè)變量newdepth,設(shè)置它的值為類中所定義的contents的深度。

  注釋18:定義一個(gè)變量newname,設(shè)置它的值為contents的實(shí)例名加上所在的深度。

  注釋19:復(fù)制一個(gè)Movie Clip,參數(shù)是newdepth和newname。這就實(shí)現(xiàn)了復(fù)制的功能。

  注釋20:設(shè)置所復(fù)制的Movie Clip的位置跟aplha。

  注釋21:假如operation不是“cut”也不是“copy”的話,直接返回。

  注釋22:定義一個(gè)函數(shù)isEmpty(),返回的類型為Boolean,調(diào)用的范圍為public。

  注釋23:根據(jù)contents的值做相應(yīng)的操作。

  注釋24:定義一個(gè)函數(shù)handleMenuCommand,返回為空,調(diào)用范圍是public。

  注釋25:根據(jù)參數(shù)item的caption來做相應(yīng)的操作,switch的功能跟多個(gè)if判定差不多,但switch適用在判定的條件可能很多的情況下。

  注釋26:假如caption的值是“Cut object”,調(diào)用cut (obj)函數(shù)。

  注釋27:假如caption的值是“Copy object”,調(diào)用copy (obj)函數(shù)。

  注釋28:假如caption的值是“Paste object”,調(diào)用paste(obj)函數(shù)。

 2、新建一個(gè)fla文件,保存在跟第一步所創(chuàng)建的ClipBoard.as在同一個(gè)目錄下面。

  3、按“Ctrl F8”創(chuàng)建一個(gè)新的Movie Clip,命名為“square”,在此Movie Clip中用矩形工具繪制一個(gè)矩形。

  4、將第三步中創(chuàng)建的Movie Clip“square”拖到場景中,在它的Action面板上添加如下的Action Script:   

  on (release) { //注釋1

  stopDrag();

  }

  on (press) { //注釋2

  startDrag(this);

  mx.behaviors.DepthControl.bringToFront(this);

  }

  注釋1:當(dāng)松開鼠標(biāo)的時(shí)候,停止拖動(dòng)對象。

  注釋2:當(dāng)按下鼠標(biāo)的時(shí)候,開始拖動(dòng)對象,并將對象設(shè)置在最前面一層。

  5、在主場景的Time Line中增加一個(gè)Layer,命名為“Action”,在此層的Action面板上添加如下的Action Scipt:   

  /* Copyright 2003 Macromedia, Inc. All rights reserved.

  The following is Sample Code and is subject to all restrictions

  on such code as contained in the End User License Agreement

  accompanying this product.

  */   

  _global.$clipboard = new ClipBoard(); //注釋1   

  function menuCallback (obj, menuObj) { //注釋2

  var empty:Boolean = _global.$clipboard.isEmpty(); //注釋3

  menuObj.customItems = ; //注釋4

  if ((obj instanceof MovieClip) && (obj != _level0)) { //注釋5

  menuObj.customItems.push(cutItem); //注釋6

  menuObj.customItems.push(copyItem);

if (!empty) { //注釋7

  menuObj.customItems.push(pasteItem);

  }   

  } else if (obj == _level0 && !empty) { //注釋8

  menuObj.customItems.push(pasteItem);

  }

  }   

  var myMenu = new ContextMenu(menuCallback); //注釋9

  //注釋10

  var cutItem = new ContextMenuItem("Cut object", _global.$clipboard.handleMenuCommand);

  //注釋11

  var copyItem = new ContextMenuItem("Copy object", _global.$clipboard.handleMenuCommand);

  //注釋12

  var pasteItem = new ContextMenuItem("Paste object", _global.$clipboard.handleMenuCommand);

  //注釋13

  MovieClip.prototype.menu = myMenu;

  注釋1:這里就是剛剛所定義的ClipBoard ()的實(shí)例化,不過_global.$clipboard是系統(tǒng)已經(jīng)有的了,所以可以直接用。

  注釋2:定義一個(gè)函數(shù)menuCallback,在創(chuàng)建菜單的時(shí)候用。

  注釋3:定義一個(gè)Boolean 類型的變量empty,它的值是調(diào)用函數(shù)_global.$clipboard.isEmpty()后所返回的值。

  注釋4:將menuObj的customItems設(shè)置為空數(shù)組。

  注釋5:判定obj所具有的屬性。

  注釋6:將“cut”和“copy”添加到菜單中。

  注釋7:假如empty為假的話(也就是已經(jīng)有cut或copy操作),將paste添加到菜單中。

  注釋8:假如鼠標(biāo)沒有選定對象的話,只將paste添加到菜單中。

  注釋9:實(shí)例化一個(gè)對象myMenu,其中構(gòu)造函數(shù)調(diào)用了menuCallback函數(shù)。

  注釋10:實(shí)例化一個(gè)對象cutItem,這是一個(gè)子菜單,顯示的內(nèi)容為“Cut object”。

  注釋11:實(shí)例化一個(gè)對象copyItem,這是一個(gè)子菜單,顯示的內(nèi)容為“Copy object”。

  注釋12:實(shí)例化一個(gè)對象pasteItem,這是一個(gè)子菜單,顯示的內(nèi)容為“Paste object”。

注釋13:將所定義的myMenu賦給系統(tǒng)。

  三、實(shí)際用途

  這個(gè)實(shí)例不單單為操作Flash Player的菜單提供了一種方法,也展示了怎么利用as文件來編程。了解清楚細(xì)節(jié),對把握Flash MX 2004的編程很有用。


分享:Flash MX 2004新特性實(shí)例(1)
實(shí)例一、AccessibleApplications一、涉及特性這個(gè)實(shí)例主要涉及新增組件的應(yīng)用,以及對組件的編程。在2004中,組件分為Data、Media、UI三大類別。讓人驚喜的

來源:設(shè)計(jì)前沿網(wǎng)上收集//所屬分類:Flash教程/更新時(shí)間:2008-03-05
相關(guān)Flash教程