网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 网管学堂 > 网页设计 > Flash > Action > as制作:可拖动单元格的菜单  

as制作:可拖动单元格的菜单

2008-08-28  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

    单元格是可以拖动的,并且可以在三个List之间拖动,不过没加自动滚动来着。AS相当简单,三个List组件分别是list1、list2、list3,然后把所有代码copy到第一帧就可以了。
import fl.events.ListEvent;
import fl.controls.List;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
//为组件添加数据
var i:uint = 0;
for(i = 0;i<21;i++){
list1.addItem({label:"label" + i});
}
for(i = 21;i<41;i++){
list2.addItem({label:"label" + i});
}
for(i = 41;i<61;i++){
list3.addItem({label:"label" + i});
}
//添加侦听器
list1.addEventListener(ListEvent.ITEM_ROLL_OVER,itemRollOverHandler);
list2.addEventListener(ListEvent.ITEM_ROLL_OVER,itemRollOverHandler);
list3.addEventListener(ListEvent.ITEM_ROLL_OVER,itemRollOverHandler);
网管朋友网www_bitscn_net

list1.addEventListener(ListEvent.ITEM_ROLL_OUT,itemRollOutHandler);
list2.addEventListener(ListEvent.ITEM_ROLL_OUT,itemRollOutHandler);
list3.addEventListener(ListEvent.ITEM_ROLL_OUT,itemRollOutHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
//标记的组件和相应的行
var lastCaredList: List = null;
var lastCaredIndex:int = -1;
var dragedList: List = null;
var dragedIndex:int = -1;
var itemValue:Object = null;
//单元格渲染器
var cellRendererClass:Class = List.getStyleDefinition()["cellRenderer"];
var cellRenderer:ICellRenderer = new cellRendererClass() as ICellRenderer;
//侦听器
function itemRollOverHandler(event: ListEvent):void{
//标记组件和行
lastCaredList = event.target as List;
lastCaredIndex = event.index; 网管论坛bbs_bitsCN_com
}
function itemRollOutHandler(event: ListEvent):void{
//取消标记
lastCaredList = null
lastCaredIndex = -1;
}
function mouseDownHandler(event:MouseEvent):void{
if(lastCaredList != null){
  //删除标记的行
  itemValue = lastCaredList.removeItemAt(lastCaredIndex);
  createCellRenderer();
}
}
function mouseUpHandler(event:MouseEvent):void{
if(itemValue){
  removeChild(cellRenderer as Sprite);
  stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
  //判断,是加到新组件中还是原组件中
  if(lastCaredList){
   lastCaredList.addItemAt(itemValue,lastCaredIndex);
  }else{
   dragedList.addItemAt(itemValue,dragedIndex);
  }
  itemValue = null;
}
}
function mouseMoveHandler(event:MouseEvent):void{

网管联盟bitsCN@com


//拖动渲染器
cellRenderer.x = mouseX;
cellRenderer.y = mouseY;
event.updateAfterEvent();
}
function createCellRenderer():void{
dragedList = lastCaredList;
dragedIndex = lastCaredIndex;
//拖动的渲染器
cellRenderer.listData = new ListData(itemValue.label,itemValue.icon,lastCaredList,0,0,0);
cellRenderer.selected = true;
cellRenderer.setSize(lastCaredList.width,lastCaredList.rowHeight);
cellRenderer.x = mouseX;
cellRenderer.y = mouseY;
addChild(cellRenderer as Sprite);
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
}
TAGs
 上一篇:利用BitmapData类制作FLASH 3D相册   下一篇:as3运用:点击图片取色
as制作:可拖动单元格的菜单 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: