用户名: 密码: 验证码: QQ--程序群:31736530 动画群:38836599
闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   有意向写收费精品教程的朋友,请联系本站合作
当前位置 :首页>flash教程>Flash as程序>列表

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

[来源:闪吧 | 作者:CYJB | 时间:2008-08-27 | 点击:  | 收藏本文  【 】]

做了一个可拖动单元格的List,算是对List的一个扩展。看效果先:

 

单元格是可以拖动的,并且可以在三个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);
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;
}
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{
//拖动渲染器
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);
}

 

文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:AS3.0 对于粘贴板的控制方法
下一篇:载入swf自获舞台的宽高
Tags:    
>>> 最新评论:(共有 0 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  教程分类
  基础操作   动画特效
  应用开发   组件学习
  As程序   动画教程
  Flash cs3   AS 3.0
  FCS/FMS教程   Loading教程
  Flash与Web   Flash教程连载
  相关文章
·BitmapData画源图片中的一部分
·flash加减法小游戏的制作过程
·flash打造随机获得游戏关卡密码
·AS入门第五课:数组
·AS常用语句 第三节-循环语句
·AS常用语句 第二节-条件语句
·AS入门第四课:AS常用语句 第一
·AS入门第三课:AS基本语法
·AS入门第二课:面向对象编程基础
·AS入门第一课:认识编程环境
  热门文章
·Flash进度条的制作详细讲解(组图)
·flash幻灯片网页效果
·Flex 3 AdvancedDataGrid的使用(第二
·全Flash动画网站实现的基础教学
·flash水影效果字
·Flash打造简单的飘雪动画视觉特效
·FLASH+XML相册(附源码)
·超酷flash光晕移动效果
·Flash旋转拖尾文字效果的制作教程
·Flash制作大雪纷飞效果动画
·flash春雷闪电效果
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号