大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 网络媒体 -> FLASH -> Flash MX 2004新特性实例学习二

Flash MX 2004新特性实例学习二

时间: 2021-07-31 作者:daque

    范例三、customizing context menu

  一、波及个性

  这个范例反应了flash mx 2004在编制程序上面的宏大矫正。个中囊括了as文献的运用,体例的_global.$clipboard变量的运用,contextmenu(menufun) 因变量的挪用,contextmenuitem()因变量的挪用,仍旧movieclip.prototype.menu变量的运用。经过这几个因变量和变量的操纵,就不妨轻快地操纵flash player中的菜单了。

  二、创造进程

  1、兴建一个action script file,定名为“clipboard.as”,实质如次:   

  /* 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;

  }

  }

  }

 本范例有比拟多的编制程序常识,刚交战会有无从发端的发觉,底下来精细解说一下波及的货色。

  解释1:class的道理是设置一个类,extends是表白所设置的类的基类是object。这个波及到编制程序的面向东西,大概比拟难懂,不妨把object看成是所设置的类的父类,父类具备的本领和属性,在子类中都是有的。

  解释2:设置一个变量contents,典型为object。flash mx 2004中都是如许设置变量的。在此处设置的变量,在所有类中都是不妨用的。

  解释3:设置一个变量operation,典型为string。

  解释4:这是类的结构因变量,所谓的结构因变量即是当范例化这个类的功夫所挪用的因变量。比方本类的范例化不妨是如许的:clipboard cb = new clipboard();

  解释5:设置一个cut因变量,传入的参数是obj,它的挪用范畴是public,也即是任何类都不妨挪用。

  解释6:树立传入的obj的alpha属性为50。

  解释7:树立解释第22中学所设置的变量的值为obj。

  解释8:树立解释3所设置的变量的值为“cut”。

  解释9:设置一个copy因变量,传入的参数是obj,挪用范畴是public。

  解释10:设置一个paste因变量,没有传入的参数,挪用范畴是public。

  解释11:确定所设置的operation的值能否为“cut”。

  解释12:树立contents的xy坐标为鼠目标xy坐标。    

    解释13:树立contents的alpha为100。

  解释14:运用完contents的值后,将contents的值从新树立为undefined。

  解释15:将operation的值清空。

  解释16:确定所设置的operation的值能否为“copy”。

  解释17:设置一个变量newdepth,树立它的值为类中所设置的contents的深度。

  解释18:设置一个变量newname,树立它的值为contents的范例名加上地方的深度。

  解释19:复制一个movie clip,参数是newdepth和newname。这就实行了复制的功效。

  解释20:树立所复制的movie clip的场所跟aplha。

  解释21:即使operation不是“cut”也不是“copy”的话,径直归来。

  解释22:设置一个因变量isempty(),归来的典型为boolean,挪用的范畴为public。

  解释23:按照contents的值做相映的操纵。

  解释24:设置一个因变量handlemenucommand,归来为空,挪用范畴是public。

  解释25:按照参数item的caption来做相映的操纵,switch的功效跟多个if确定差不离,但switch实用在确定的前提大概很多的情景下。

  解释26:即使caption的值是“cut object”,挪用cut (obj)因变量。

  解释27:即使caption的值是“copy object”,挪用copy (obj)因变量。

  解释28:即使caption的值是“paste object”,挪用paste(obj)因变量。

 2、兴建一个fla文献,生存在跟第一步所创造的clipboard.as在同一个目次底下。

  3、按“ctrl + f8”创造一个新的movie clip,定名为“square”,在此movie clip顶用矩形东西绘制一个矩形。

  4、将第三步中创造的movie clip“square”拖加入景中,在它的action面板上增添如次的action script:   

  on (release) { //解释1

  stopdrag();

  }

  on (press) { //解释2

  startdrag(this);

  mx.behaviors.depthcontrol.bringtofront(this);

  }

  解释1:当松开鼠目标功夫,遏止拖动东西。

  解释2:当按下鼠目标功夫,发端拖动东西,并将东西树立在最前方一层。

  5、在主场景的time line中减少一个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 ()的范例化,然而_global.$clipboard是体例仍旧有的了,以是不妨径直用。

  解释2:设置一个因变量menucallback,在创造菜单的功夫用。

  解释3:设置一个boolean 典型的变量empty,它的值是挪用因变量_global.$clipboard.isempty()后所归来的值。

  解释4:将menuobj的customitems树立为空数组。

  解释5:确定obj所具备的属性。

  解释6:将“cut”和“copy”增添到菜单中。

  解释7:即使empty为假的话(也即是仍旧有cut或copy操纵),将paste增添到菜单中。

  解释8:即使鼠标没有选定东西的话,只将paste增添到菜单中。

  解释9:范例化一个东西mymenu,个中结构因变量挪用了menucallback因变量。

  解释10:范例化一个东西cutitem,这是一个子菜单,表露的实质为“cut object”。

  解释11:范例化一个东西copyitem,这是一个子菜单,表露的实质为“copy object”。

  解释12:范例化一个东西pasteitem,这是一个子菜单,表露的实质为“paste object”。

    解释13:将所设置的mymenu赋给体例。

  三、本质用处

  这个范例不只单为操纵flash player的菜单供给了一种本领,也展现了如何运用as文献来编制程序。领会领会详细,对控制flash mx 2004的编制程序很有效。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.