⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用as2.0写导航菜单 .txt

📁 用as2.0写导航菜单的程序
💻 TXT
📖 第 1 页 / 共 3 页
字号:

class MenuView extends MovieClip { 
  
 private var _menuLable; 
 private var _menuUrl; 
 private var _sn; 
  
 private function MenuView() { 
 } 
  
 public function set menuLable(i:String):Void { 
  _menuLable.text = i; 
 } 
 public function set menuUrl(i:String):Void { 
  _menuUrl = i; 
 } 
 public function set sn(i:Number):Void { 
  _sn = i; 
 }  
 public function get menuUrl():String { 
  return _menuUrl; 
 } 
 public function get menuLable():String { 
  return _menuLable.text; 
 } 
 public function get sn():Number { 
  return _sn; 
 } 
}
MenuPresenter.as(表示器,用来组织如何显示菜单的as2.0类)


import MenuXMLModel; 
class MenuPresenter extends MovieClip { 
  
 private var _totalMenuItem:Number; 
 private var _menu_xml:MenuXMLModel; 
 private var mainMenuArray:Array; 
 private var subMenuArray:Array; 
 private var menuBarWidth:Number = Stage.width; 
 private var menuBarHeigth:Number = 22; 
 private var menuBarX:Number; 
 private var menuBarY:Number; 
 private var subMenuBarRow:Boolean = false; 
  
 public function MenuPresenter() { 
  _menu_xml = new MenuXMLModel(); 
  this.loadXML("menuData.xml"); 
 } 
  
 private function onMenuDataLoaded():Void { 
  //得到贮存菜单数据的数组及菜单数量 
  mainMenuArray=_menu_xml.getMainMenuArray(); 
  subMenuArray =_menu_xml.getSubMenuArray(); 
  _totalMenuItem = mainMenuArray.length; 
   
  //设定整个菜单的位置参数值 
  menuBarX = 0; 
  menuBarY = 0; 
  //设定单个菜单的宽度 
  var menuWidth:Number = menuBarWidth/_totalMenuItem; 
   
  //一次性把主菜单及所有的下拉MC都建立,使用户访问更快 
  //主菜单 
  var menuBar:MovieClip; 
  var menuItem:MovieClip; 
  menuBar=this.createEmptyMovieClip("mainMenuBar",100); 
  menuBar._x = menuBarX; 
  menuBar._y = menuBarY; 
  for (var i = 0; i<_totalMenuItem; i++) { 
   menuItem = menuBar.attachMovie("MenuItem", "MenuItem_"+i, 100+i); 
   menuItem._width = menuWidth; 
   menuItem._x = menuWidth/2 + i*menuWidth; 
   menuItem.menuLable = mainMenuArray[i][0]; 
   //根据是否存在下拉菜单进行设置 
   if (mainMenuArray[i][1]==undefined) { 
    menuItem.sn=i; 
    menuItem.onRollOver=function(){ 
     var owner:Object = this._parent._parent; 
     owner.showSubMenu(this.sn); 
    } 
    menuItem.onPress=function(){ 
     //这里加上条件判断是对用户试探性点击做出的回应 
     var owner:Object = this._parent._parent; 
     var tempMC:MovieClip = eval(owner+"."+this.sn); 
     if (tempMC._visible == true){ 
      owner.closeSubMenu(this.sn) 
     }else{ 
      owner.showSubMenu(this.sn); 
     } 
    } 
   }else{ 
    menuItem.menuUrl = mainMenuArray[i][1]; 
    menuItem.onPress=function(){ 
     //测试用 
     _root.url.text=this.menuUrl+" will be loaded."; 
     //getURL(this.menuUrl); 
    } 
   } 
  } 
  //建立各子菜单 
  var subMenuBar:MovieClip; 
  var subMenuItem:MovieClip; 
  //子菜单的数量根据XML文件内容确定 
  for (var i = 0; i<_totalMenuItem; i++){ 
   //对于只有一级菜单的不建立子菜单(主菜单有lable且有url说明没有下级菜单) 
   if (mainMenuArray[i][1]!=undefined) continue;  
    
   //这是放置子菜单的MC(用i来设置新名称是为了方便控制,因为这个i也就是菜单对应数据在数组中的位置) 
   //子菜单的位置应该由上级菜单位置确定,这样美观,但得根据数量动态设定,有一定难度 
   subMenuBar = this.createEmptyMovieClip(i,i); 
   subMenuBar._visible = false;  
   subMenuBar._x = menuBarX + i*menuWidth + menuWidth/2; 
   subMenuBar._y = menuBarY + menuBarHeigth + 1; 
   //每个子菜单里的MC 
   var n:Number=0; 
   for (var j=0; j<subMenuArray[i].length; j++){ 
    subMenuItem = subMenuBar.attachMovie("MenuItem", "subMenuItem_"+n, 100+n); 
    //根据subMenuBarRow的真假来确定子菜单是横排还是竖排 
    if (subMenuBarRow){ 
     subMenuItem._width = menuWidth; 
     subMenuItem._x = j*menuWidth; 
    }else{ 
     subMenuItem._width = menuWidth; 
     //subMenuItem._x = menuWidth; 
     subMenuItem._y = j*(menuBarHeigth+1); 
    } 
    subMenuItem.menuLable = subMenuArray[i][j][0]; 
    //下面是用hitTest来确定是否关闭子菜单,这是一个关键性技巧 
    subMenuItem.onRollOut=function(){ 
     if (!this._parent.hitTest(_root._xmouse, _root._ymouse, false)){ 
      this._parent._visible = false; 
     }     
    } 
    subMenuItem.menuUrl = subMenuArray[i][j][1]; 
    subMenuItem.onPress=function(){ 
     //测试用 
     _root.url.text=this.menuUrl+" will be loaded."; 
     //getURL(this.menuUrl); 
    } 
    n++; 
   } 
  } 
   
  delete mainMenuArray; 
  delete subMenuArray; 
  delete _menu_xml; 
 } 
  
 private function showSubMenu(i:Number):Void { 
  for (var j=0; j<_totalMenuItem; j++){ 
   var tempMC:MovieClip = eval("this."+j); 
   if (i!=j){ 
    tempMC._visible = false; 
   }else{ 
    tempMC._visible = true; 
   } 
  } 
 } 
 private function closeSubMenu(i:Number):Void { 
  var tempMC:MovieClip = eval("this."+i); 
  tempMC._visible = false; 
 } 
 //给外界提供的导入XML文件方法   
 public function loadXML(xn:String):Void { 
  _menu_xml.load(xn); 
  _menu_xml.addEventListener("onMenuDataLoaded", this); 
 } 
 //给外界提供设置子菜单的排列方向的方法 
 public function set Row(i:Boolean):Void { 
  subMenuBarRow = i; 
 } 
} 

/* 
数组结构图 
  |-0 [lable,url] 
  |-1 [lable,url] 
mainMenuArray  -|-2 [lable,url] 
  |-3 [lable,url] 
  |-4 [lable,url] 
       |-0 [lable,url] 
        |-1 [lable,url] 
  |-0 -|-2 [lable,url] 
  |-1  |-3 [lable,url] 
subMenuArray   -|-2 
  |-3  |-0 [lable,url] 
  |-4 -|-1 [lable,url] 
       |-2 [lable,url] 
*/


 


import mx.events.EventDispatcher; 
class MenuXMLModel extends XML { 
 private var mainmenu:Array; 
 private var submenu:Array; 
 public var addEventListener:Function; 
 public var removeEventListener:Function; 
 private var dispatchEvent:Function; 
 private static var _mixin1 = EventDispatcher.initialize(MenuXMLModel.prototype); 
  
 public function MenuXMLModel() { 
  mainmenu = new Array(); 
  submenu = new Array(); 
  ignoreWhite = true; 
 } 
 private function onLoad():Void { 
  var tempA = new Array(); 
  var tempB = new Array(); 
  tempA = this.firstChild.childNodes; 
  for (var i=0; i<tempA.length; i++){ 
   mainmenu[i]=[tempA[i].attributes.lable,tempA[i].attributes.url]; 
   tempB = tempA[i].childNodes; 
   var tempC = new Array(); 
   for (var j=0; j<tempB.length; j++){ 
    tempC[j]=[tempB[j].attributes.lable,tempB[j].attributes.url]; 
   } 
   submenu[i]=tempC; 
   delete tempC; 
  } 
  this.dispatchEvent({type:"onMenuDataLoaded", target:this}); 
 } 
 public function getMainMenuArray():Array { 
  return mainmenu; 
 } 
 public function getSubMenuArray():Array { 
  return submenu; 
 } 
}
MenuView.as(as2.0类,用于设置单个菜单项目的属性)


class MenuView extends MovieClip { 
  
 private var _menuLable; 
 private var _menuUrl; 
 private var _sn; 
  
 private function MenuView() { 
 } 
  
 public function set menuLable(i:String):Void { 
  _menuLable.text = i; 
 } 
 public function set menuUrl(i:String):Void { 
  _menuUrl = i; 
 } 
 public function set sn(i:Number):Void { 
  _sn = i; 
 }  
 public function get menuUrl():String { 
  return _menuUrl; 
 } 
 public function get menuLable():String { 
  return _menuLable.text; 
 } 
 public function get sn():Number { 
  return _sn; 
 } 
}
MenuPresenter.as(表示器,用来组织如何显示菜单的as2.0类)


import MenuXMLModel; 
class MenuPresenter extends MovieClip { 
  
 private var _totalMenuItem:Number; 
 private var _menu_xml:MenuXMLModel; 
 private var mainMenuArray:Array; 
 private var subMenuArray:Array; 
 private var menuBarWidth:Number = Stage.width; 
 private var menuBarHeigth:Number = 22; 
 private var menuBarX:Number; 
 private var menuBarY:Number; 
 private var subMenuBarRow:Boolean = false; 
  
 public function MenuPresenter() { 
  _menu_xml = new MenuXMLModel(); 
  this.loadXML("menuData.xml"); 
 } 
  
 private function onMenuDataLoaded():Void { 
  //得到贮存菜单数据的数组及菜单数量 
  mainMenuArray=_menu_xml.getMainMenuArray(); 
  subMenuArray =_menu_xml.getSubMenuArray(); 
  _totalMenuItem = mainMenuArray.length; 
   
  //设定整个菜单的位置参数值 
  menuBarX = 0; 
  menuBarY = 0; 
  //设定单个菜单的宽度 
  var menuWidth:Number = menuBarWidth/_totalMenuItem; 
   
  //一次性把主菜单及所有的下拉MC都建立,使用户访问更快 
  //主菜单 
  var menuBar:MovieClip; 
  var menuItem:MovieClip; 
  menuBar=this.createEmptyMovieClip("mainMenuBar",100); 
  menuBar._x = menuBarX; 
  menuBar._y = menuBarY; 
  for (var i = 0; i<_totalMenuItem; i++) { 
   menuItem = menuBar.attachMovie("MenuItem", "MenuItem_"+i, 100+i); 
   menuItem._width = menuWidth; 
   menuItem._x = menuWidth/2 + i*menuWidth; 
   menuItem.menuLable = mainMenuArray[i][0]; 
   //根据是否存在下拉菜单进行设置 
   if (mainMenuArray[i][1]==undefined) { 
    menuItem.sn=i; 
    menuItem.onRollOver=function(){ 
     var owner:Object = this._parent._parent; 
     owner.showSubMenu(this.sn); 
    } 
    menuItem.onPress=function(){ 
     //这里加上条件判断是对用户试探性点击做出的回应 
     var owner:Object = this._parent._parent; 
     var tempMC:MovieClip = eval(owner+"."+this.sn); 
     if (tempMC._visible == true){ 
      owner.closeSubMenu(this.sn) 
     }else{ 
      owner.showSubMenu(this.sn); 
     } 
    } 
   }else{ 
    menuItem.menuUrl = mainMenuArray[i][1]; 
    menuItem.onPress=function(){ 
     //测试用 
     _root.url.text=this.menuUrl+" will be loaded."; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -