- 浏览: 580587 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
smilezhouwei:
请问CruiseControl在加载jar包时,由于jar包过 ...
修改CruiseControl的端口 -
zengxuefei:
不起作用啊,有bug
Flex+Java多文件上传 -
lzeus:
模仿的tomcat源码吧?
java事件处理机制(自定义事件)【转】 -
yangbobestone:
...
FreeMarker整合Struts2 -
fddjxllren:
那是因为你没配置事务,楼主的那个主要是针对事务的写法
Spring2.5+JUnit4单元测试
<!--StartFragment -->
下面这个实例是将相应的物品拖放指定面板中,本例用到了MVC模式
物品为分为上衣和裤子,有三个面板Panel,一个容纳上衣的面板,一个容纳裤子的面板,还有一个是货架可以容纳上衣和裤子。
即:
1)货架中的上衣可以拖放到上衣面板中,反之上衣面板中的物品可以拖放到货架中;
2)货架中的裤子可以拖放到裤子面板中,反之裤子面板中的物品可以拖放到货架中;
3)上衣不能拖放到裤子面板中,裤子不能拖放到上衣面板中;
效果图请看附近中view.jpg
第一步:创建物品VO,
ItemVO.java
package mytest.dragDrop.item { public class ItemVO { private var _id:int; private var _name:String; private var _type:int; public function ItemVO($id:int, $name:String, $type:int) { this._id = $id; this._name = $name; this._type = $type; } public function get type():int { return _type; } public function set type(value:int):void { _type = value; } public function get name():String { return _name; } public function set name(value:String):void { _name = value; } public function get id():int { return _id; } public function set id(value:int):void { _id = value; } } }
第二步:创建物品组件,因为物品要以组件Label的形式放在Panel中(可以根据自己的要求来包装物品VO)
ItemLabel.as
package mytest.dragDrop.item { import org.aswing.JLabel; import org.aswing.dnd.DragManager; import org.aswing.dnd.SourceData; import org.aswing.event.DragAndDropEvent; public class ItemLabel extends JLabel { private var _item:ItemVO; public function ItemLabel($item:ItemVO) { super($item.name); this._item = $item; setDragEnabled(true); addEventListener(DragAndDropEvent.DRAG_RECOGNIZED, __onDragStart); } private function __onDragStart(event:DragAndDropEvent):void{ DragManager.startDrag(this, new SourceData("item", _item)); } public function getItem():ItemVO{ return this._item; } } }
第三步:Model类
ItemModel.as
package mytest.dragDrop.item { import flash.events.Event; import flash.events.EventDispatcher; import org.aswing.util.HashMap; public class ItemModel extends EventDispatcher { public static const EVENT_GET_ITEM_SUCC:String = "event_get_item_succ"; private var _itemMap:HashMap; public function ItemModel() { _itemMap = new HashMap(); } public function getItemByType($type:int):void{ if($type == 1001){ _itemMap.put(1001, [ new ItemLabel(new ItemVO(8002, "上衣2", 1001)), new ItemLabel(new ItemVO(8003, "上衣3", 1001)) ]); } else if($type == 1002){ _itemMap.put(1002, [ new ItemLabel(new ItemVO(9001, "裤子1", 1002)), ]); } else{ _itemMap.put(-1, [ new ItemLabel(new ItemVO(8001, "上衣1", 1001)), new ItemLabel(new ItemVO(9002, "裤子2", 1002)), new ItemLabel(new ItemVO(9003, "裤子3", 1002)) ]); } dispatchEvent(new Event(EVENT_GET_ITEM_SUCC)); } public function get itemMap():HashMap { return _itemMap; } public function set itemMap(value:HashMap):void { _itemMap = value; } } }
第四步:Control类
ItemControl.as
package mytest.dragDrop.item { public class ItemControl { private var _itemModel:ItemModel; public function ItemControl($itemModel:ItemModel) { this._itemModel = $itemModel; } public function getItemByType($type:int):void{ _itemModel.getItemByType($type); } } }
第五步:物品面板,前面的ItemLabel是会放在ItemPanel中的
ItemPanel.as
package mytest.dragDrop.item { import flash.events.Event; import org.aswing.ASColor; import org.aswing.JPanel; import org.aswing.border.TitledBorder; import org.aswing.event.DragAndDropEvent; public class ItemPanel extends JPanel { private var _itemModel:ItemModel; private var _itemControl:ItemControl; private var _type:int; private var _originalBG:ASColor; public function ItemPanel($itemModel:ItemModel, $itemControl:ItemControl, $title:String, $type:int = -1) { super(); this._itemModel = $itemModel; this._itemControl = $itemControl; this._type = $type; var border:TitledBorder = new TitledBorder(null, $title); border.setColor(ASColor.BLACK); setBorder(border); setDropTrigger(true); setDragAcceptableInitiatorAppraiser(__onDragAppraiser); addEventListener(DragAndDropEvent.DRAG_ENTER, __onDragEnter); addEventListener(DragAndDropEvent.DRAG_EXIT, __onDragExit); addEventListener(DragAndDropEvent.DRAG_DROP, __onDragDrop); setOpaque(true); _originalBG = getBackground(); _itemModel.addEventListener(ItemModel.EVENT_GET_ITEM_SUCC, __onGetItemSucc); _itemControl.getItemByType($type); } private function __onGetItemSucc(event:Event):void{ appendItemLabel(_itemModel.itemMap.get(this._type) as Array); } private function appendItemLabel(items:Array):void{ for each(var item:ItemLabel in items){ this.append(item); } _itemModel.removeEventListener(ItemModel.EVENT_GET_ITEM_SUCC, __onGetItemSucc); } private function __onDragAppraiser(initiator:ItemLabel):Boolean{ if(_type == -1) return true; else return _type == initiator.getItem().type; } private function __onDragEnter(event:DragAndDropEvent):void{ var initiator:ItemLabel = event.getDragInitiator() as ItemLabel; if(__onDragAppraiser(initiator)){ setBackground(ASColor.GREEN); } } private function __onDragExit(event:DragAndDropEvent):void{ setBackground(_originalBG); var initiator:ItemLabel = event.getDragInitiator() as ItemLabel; if(__onDragAppraiser(initiator)){ } } private function __onDragDrop(event:DragAndDropEvent):void{ setBackground(_originalBG); var initiator:ItemLabel = event.getDragInitiator() as ItemLabel; if(__onDragAppraiser(initiator)){ append(initiator); } } public function getItems():Array{ return this.children; } } }
第六步:主界面
ItemDragDrop.as
package mytest.dragDrop.item { import flash.display.Sprite; import flash.events.MouseEvent; import org.aswing.AsWingManager; import org.aswing.GridLayout; import org.aswing.JButton; import org.aswing.JFrame; import org.aswing.JPanel; import org.aswing.geom.IntDimension; public class ItemDragDrop extends Sprite { private var _frm:JFrame; private var _jacketArea:ItemPanel; private var _pantsArea:ItemPanel; private var _whiteArea:ItemPanel; private var _itemModel:ItemModel; private var _itemControl:ItemControl; public function ItemDragDrop() { AsWingManager.initAsStandard(this); _itemModel = new ItemModel(); _itemControl = new ItemControl(_itemModel); _frm = new JFrame(null, "物品分配"); _jacketArea = new ItemPanel(_itemModel, _itemControl, "上衣", 1001); _pantsArea = new ItemPanel(_itemModel, _itemControl, "裤子", 1002); _whiteArea = new ItemPanel(_itemModel, _itemControl, "货架", -1); var panel:JPanel = new JPanel(new GridLayout(2, 2, 4, 4)); panel.appendAll(_jacketArea, _pantsArea, _whiteArea); var showBtn:JButton = new JButton("查看"); showBtn.addEventListener(MouseEvent.CLICK, __onClick); panel.appendAll(showBtn); _frm.setContentPane(panel); _frm.setSize(new IntDimension(400, 400)); _frm.show(); } private function __onClick(e:MouseEvent):void{ trace("===上衣==="); for each (var jacket:ItemLabel in _jacketArea.getItems()){ trace(jacket.getItem().name); } trace(); trace("===裤子==="); for each (var pants:ItemLabel in _pantsArea.getItems()){ trace(pants.getItem().name); } trace(); trace("===货架==="); for each (var white:ItemLabel in _whiteArea.getItems()){ trace(white.getItem().name); } trace(); } } }
发表评论
-
AS3 条件编译
2013-06-07 09:38 1308转:http://www.lite3.cn/blog/?p= ... -
TextField没有buttonMode的方法..
2010-12-10 16:28 2300TextField没有buttonMode的方法..不过由于T ... -
ActionScript 处理html超级链接
2010-12-09 11:14 2128ActionScript 处理html超级链接 p ... -
通过代理传参数
2010-07-02 11:43 1391通过代理传参数 package com.xlands.uti ... -
ArrayUtils
2010-07-02 11:36 1502/* Copyright aswing.org, s ... -
将数组随机排序后返回
2010-06-30 16:40 1819将数组随机排序后返回 方法一 /** * ... -
AS类中跳转
2010-06-29 10:22 1799AS类中跳转 navigate ... -
Flash与Javascript交互时可用ExternalInterface类
2010-06-29 10:17 3648Flash与Javascript交互时可用ExternalIn ... -
转载:[as hack技术]垃圾回收机强制执行
2010-06-29 09:47 1430转载:[as hack技术]垃圾回收机强制执行 http:// ... -
Flash中所支持的Html标签
2010-06-24 17:21 1367Flash中所支持的Html标签 ... -
navigateToURL()
2010-06-22 15:27 2493navigateToURL() public fun ... -
ActionScript中Http请求
2010-06-19 09:42 3074ActionScript中Http请求 因我是用MVC模式来 ... -
ActionScript字符串工具
2010-06-04 09:44 3263ActionScript字符串工具 package c ... -
加载外部SWF文件
2010-05-22 15:43 1359加载外部SWF文件 package mytest.dt { ... -
AsWing+Java上传文件
2010-05-11 09:16 1749AsWing+Java上传文件 UI是用AsWing实现比较 ... -
A*最最基础的非常非常好的寻路教程!
2010-05-08 10:01 2007最最基础的非常非常好 ... -
JTable单元格偏移
2010-05-07 11:15 1357如果Frame中有个表格JTable,且允许双击单元格编辑,那 ... -
ActionScript中日期正则表达式
2010-04-27 18:24 1270这里是判断YYYY-MM-DD这种格式的,基本上把闰年和 ... -
AS中使用JSON
2010-04-26 09:15 2993要使用json作为数据交换格式。需引入corelib Acti ... -
invalidateDisplayList
2010-03-31 14:39 1913当多次改变控件的某些属性(如 高,宽,数据)后,调用该方法以便 ...
相关推荐
ASWING 中文教程 PureMvc模式的控件类
AsWing 教程中文版 要您5分一点也不多
AsWing的Aeon皮肤更换实例,方便更换AsWing的皮肤。
aswing API,与AsWing Book.pdf一起使用
AS3的aswing帮助文档! AS3的程序员必备物品。。详细的介绍哦
aswing组件知识点
我用svn 生成了aswing2.0 src . 可以代替aswing的 swc 来开发项目。并且可以修改aswing 的代码。 有需要的可以下载玩下
aswing类库的下载,可以让大家使用现成的布局来显示对象很简单很方便
AsWing Book.pdfAsWing Book.pdfAsWing Book.pdfAsWing Book.pdf
一个简单的Aswing皮肤制作教程,方便初学者设计个性化的皮肤
aswing的jar包,新手入门
用实例讲述aswing的入门,用一个日程管理的例子,详细的讲述了aswing的开发过程,注意从Google下载aswing源代码的时候下载1.0的swc就可以了,flex环境
pureMVC,aswing框架 包含文件: AsWing.swc PureMVC_AS3_2_0_4.swc
aswing_a3_1.3.2_allinone
AsWing 2.0在12月12日发布了,增加了一些新的组件,如:JStepper(数字歩进器)、JDataChooser(日期选择器)、JAdvancedTable(高级表格,还未开发),全新的默认组件外观。新的外观自定义方式。 包内有源代码和SWC包。
AS3编写的UI包,包括GUI编辑器,以及全部的源码,值得下载
主要是解决aswing 换肤问题,用flex 生成的xml 转成对应的aswing代码
aswing1.5 很好的开源代码 带皮肤框架
aswing 的 api 开发 学习aswing 的必要工具包