`
hacker47
  • 浏览: 340435 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

AS3实例:框选对象

 
阅读更多








代码:


package  
{
	import com.duowan.util.DrawUtil;
	import flash.display.DisplayObject;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.text.TextField;
	
	/**
	 * ...
	 * @author hacker47
	 */
	public class SelectMain extends Sprite 
	{
		private var p0:Point = new Point();
		private var drawWidth:Number;
		private var drawHeight:Number;
		
		public function SelectMain() 
		{
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
		}
		
		private function onDown(e:MouseEvent):void {
			p0.x=mouseX;
			p0.y= mouseY;
			stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
			stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
		}
		
		private function onMove(e:MouseEvent):void {
			drawWidth = mouseX - p0.x;
			drawHeight = mouseY -p0.y;
			graphics.clear();
			DrawUtil.drawRect(graphics, p0, drawWidth, drawHeight);
		}
		
		private function onUp(e:MouseEvent):void {
			stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove);
			checkRange();
		}
		
		private function checkRange():void {
			if (drawWidth < 0) {
				drawWidth = -drawWidth;
				p0.x -= drawWidth;
			}
			
			if (drawHeight < 0) {
				drawHeight = -drawHeight;
				p0.y -= drawHeight;
			}
			
			for (var i:int = 0; i < this.numChildren; i++ ) {
				var d:DisplayObject = getChildAt(i);
				var rect:Rectangle = d.getRect(this);
				if (rect.x > p0.x && rect.x < (p0.x + drawWidth)) {
					if (rect.y > p0.y && rect.y < (p0.y + drawHeight)) {
						selectedDraw(rect);
					}
				}
				
			}
		}
		
		private function selectedDraw(rect:Rectangle):void {
			graphics.lineStyle(2, 0x336699);
			graphics.drawRect(rect.x, rect.y, rect.width, rect.height);
		}

	}

}



  • 大小: 32.1 KB
  • 大小: 41.7 KB
0
0
分享到:
评论
3 楼 letian003 2014-04-23  
楼主怎么没把那个包一起放出来呢
2 楼 letian003 2014-04-23  
楼主怎么没把那个把一起放出来呢
1 楼 Mr桀骜不驯 2013-05-19  
我想请教一下,当你框选之后,怎么样可以实现鼠标点击其他地方(非选中区域),选中的就会被取消选中呢?求赐教

相关推荐

    flash as2.0基础编程实例集锦

    3. **组件-是否启用输入框TextInput和CheckBox**:这个实例关注的是用户界面元素的交互状态,如文本输入框(TextInput)和复选框(CheckBox)的启用和禁用。通过学习,你可以理解如何响应用户输入并调整组件的状态,...

    EXCEL 对象操作实例 C# VB

    1. **Application对象**:`Application`对象代表正在运行的Excel实例,它是所有其他对象的基础。它提供了对Excel应用程序全局设置和行为的访问,如打开、关闭工作簿,以及控制应用程序的可见性等。例如,你可以使用`...

    as3反射和将XML转换成对象的类

    在实际应用中,这样的工具类组合可以帮助我们实现一些高级功能,比如序列化/反序列化XML到AS3对象,动态创建和操作类实例,或者进行自定义的类型检查和验证。使用反射和XML转换,开发者可以构建更加灵活和适应性强的...

    Excel VBA实例教程:工作表的添加与删除

    - 第3行到第7行通过`For Each`循环检查所有工作表,如果发现名称为“数据”的工作表,则显示一条消息框并退出子程序。 - 如果没有找到同名的工作表,则执行第9行到第12行的代码,创建一个新的工作表并命名为“数据”...

    张志晨VB实例教程之字符串转换成变量名

    具体来说,假设有三个复选框`Check1`、`Check2`和`Check3`,每个复选框对应一个字符串`str1`、`str2`和`str3`,你需要根据哪个复选框被选中来输出相应的字符串。 **解决方案**: 1. **初始化字符串变量**:定义`...

    VB.NET使用复选框控件打开窗体(带窗体版本说明)

    创建一个复选框,可以通过在设计器中直接拖放,或者在代码中实例化一个新的CheckBox对象。例如: ```vb.net Dim chkBox1 As New CheckBox() chkBox1.Text = "窗体1" ' 其他属性设置,如位置、大小等 Me.Controls....

    VBA问题?复选框

    本实例将深入探讨如何在VBA环境中使用复选框,包括其添加、属性设置、事件处理以及与工作表数据的交互。 首先,让我们了解复选框在VBA中的类型。在用户窗体(UserForm)中,复选框属于`Microsoft Forms 2.0 Object ...

    HQL查询及语法

    3. **创建Query对象**:利用Session对象的`createQuery`方法,传入HQL语句创建Query实例。 4. **设置参数**:如果HQL语句中包含参数,需调用Query对象的`setXxx`方法为其赋值。 5. **执行查询并处理结果**:最后...

    free-transform-manager-as3:FreeTransformManager 是一个 as3 类,它允许用户在您的应用程序中选择和转换精灵 - 只需 3 行代码

    2. **创建实例**:然后,创建 FreeTransformManager 的实例,并将其附加到要可选和可变换的 Sprite 上: ```as3 var transformManager:FreeTransformManager = new FreeTransformManager(mySprite); ``` 在这里...

    python源码-案例框架-实例-16 pj zip文件.zip

    这个方法接受两个参数:要添加到ZIP文件的文件名和在ZIP内显示的文件名(可选)。例如: ```python import zipfile with zipfile.ZipFile('output.zip', 'w') as myzip: myzip.write('file1.txt') myzip....

    自制flash checkbox多选组件

    为了实现这个自定义的Flash AS3复选框组件,开发者首先会定义一个类,该类包含必要的属性(如选中状态、文本标签等)和方法(如`select()`和`deselect()`)。然后,他们会在`MyCheckBox.fla`中设计组件的视觉表现,...

    函数公式的组合应用实例精选.rar

    - `acCheckBox`:创建复选框,允许用户进行多选操作。 - `acComboBox`:组合框,结合下拉列表和输入框功能。 - `acCommandButton`:命令按钮,触发特定的事件或动作。 - `acCustomControlActiveX`:自定义控件,...

    Hittest As3.0碰撞检测

    这里的`true`参数是可选的,如果设置为`true`,则会考虑对象的透明度,即使对象的部分不完全可见,也会检测到碰撞。 大师的这份资源可能包含了对这些方法的优化,以及如何在复杂场景下高效地处理大量物体的碰撞检测...

    flex的dataGrid添加复选框(checkBox)

    3. **自定义列**:在DataGrid中,我们需要为包含复选框的列创建一个自定义的ItemRenderer。ItemRenderer是DataGrid中用于渲染单个数据项的组件。创建一个继承自MX:GridColumn的类,并重写`createChildren`方法来添加...

    vb TreeView实例

    这段代码在程序加载时创建了一个父节点和两个子节点,并在节点选择后弹出消息框显示所选节点的文本。 6. **优化与扩展** - 可以通过`TreeNode.ExpandAll()`和`.CollapseAll()`方法来展开或折叠所有节点。 - `...

    Excel-VBA宏编程实例源代码-在列表框和下拉列表中添加指定的文本.zip

    3. **设置项属性**:除了添加文本,我们还可以设置每个项的其他属性,如字体、颜色、是否被选中等。例如,我们可以将“Option1”设为默认选中: ```vba myListBox.ListIndex = 0 ' 设置第一个项为选中 ``` 4. **...

    flex datagrid插入多列Checkbox应用实例

    在数据源中,确保每个对象都有与之对应的"field1"和"field2"字段,这样复选框的状态就可以正确地与数据绑定。 为了避免拖动滚动条时出现混乱,我们需要监听DataGrid的scroll事件,并在事件处理函数中同步所有复选框...

    Excel VBA实例讲解

    - **用户窗体**:设计用户友好的界面,通过按钮、文本框、复选框等控件实现交互式操作,提高用户体验。 - **事件驱动编程**:利用Excel的内置事件(如SheetChange或Workbook_Open),实现自动化响应。 - **错误...

    AS3.0像素级别精确检测碰撞

    通常,AS3.0中的基本碰撞检测基于对象的边界框,但这种方法可能无法处理非矩形形状或具有透明度的图像。为了实现更精细的控制,我们可以利用BitmapData类进行像素级别的碰撞检测。 BitmapData类是AS3.0中处理像素的...

Global site tag (gtag.js) - Google Analytics