`
sakakokiya
  • 浏览: 507488 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

darag hit test

阅读更多
package  
{
	
  import flash.display.*;
  import flash.events.*;
  import flash.text.TextField;
  import flash.text.TextFieldAutoSize;
  import flash.display.StageAlign;
  import flash.display.StageScaleMode;
  import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.MouseEvent;
	import flash.filters.GlowFilter;
	import flash.geom.Matrix;
	import flash.geom.Point;
	/**
	 * ...
	 * @author yi-en
	 */
	public class DragSentencer extends Sprite
	{
		var target_array:Array =new Array(); 
		var to_where_obj:Object = new Object(); 
		var initial_position_obj:Object = new Object(); 
		  
		var destination_array:Array = new Array();; 
		var is_occupied_obj:Object = new Object();
		var selectStc:Array = new Array();
		var wrongSent:Array = new Array();
		var keepStence:Sprite;
		var count:int = 0;
		
		public function DragSentencer() 
		{
			stage.align = StageAlign.TOP_LEFT;
		  stage.scaleMode = StageScaleMode.NO_SCALE;        
		  
		  initData();
		  initUI();
		  initBehaver();
		  addEventListener(Event.ENTER_FRAME, onEnterFrame);
		  
		}
		private function initUI():void {
			for (var i:Number = 0; i < target_array.length; i++) { 
				var _mc:MovieClip = target_array[i] as MovieClip;
				var _senMc:MovieClip = destination_array[i] as MovieClip;
				initial_position_obj[_mc.name] = { x:_mc.x, y:_mc.y }; 
				initial_position_obj[_senMc.name] = {x:_senMc.x, y:_senMc.y}; 
				addChild(_mc);
				addChild(_senMc);
				
			} 
			
		}
		
		private function initBehaver():void {
			for (var i:Number = 0; i < target_array.length; i++) { 
				var _mc = target_array[i]; 
				
				_mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown); 
				_mc.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); 
				_mc.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); 
			} 
		}
		
		
		private function initData():void {
			var example:String = "0000000000 111111111 2222222222";	  
			  var words:Array = example.split(" ");
			  var word:Sprite;
			  var wordText:TextField;
			  for ( var i:int = 0; i < words.length; i++ ) {
				keepStence = new MovieClip();
				
				wordText = new TextField();
				keepStence.addChild( wordText );
				
				wordText.autoSize   = TextFieldAutoSize.LEFT; // Left-justify the text
				wordText.border     = true;
				wordText.background = true;
				wordText.selectable = false;  
				var temp:String = words[i] as String;
				wordText.text = words[i];     
				
				keepStence.x = i*temp.length*10;
				keepStence.y = 100;
				keepStence.name = "dest_" + i;
				// make a fixed bitmap, draw the star into it		
				destination_array.push(keepStence);
				//selectStc.push("-");			
			  }
			  
			  for ( var i:int = 0; i < words.length; i++ ) {
				word = new MovieClip();
				target_array.push(word);
				wordText = new TextField(  );
				word.addChild( wordText );
				
				wordText.autoSize   = TextFieldAutoSize.LEFT; // Left-justify the text
				wordText.border     = true;
				wordText.background = true;
				wordText.selectable = false;
					
				wordText.text = words[i];
			   word.x = 10*i;
				word.y = 10 * i;
				word.name = "t_" + i;
				
			  }
			
		}
		
		function mouseDown(event:MouseEvent):void 
		{ 
			var _mc = event.target.parent; 			
			 setChildIndex( _mc, numChildren - 1 );
			_mc.startDrag(); 
		} 
		function mouseReleased(event:MouseEvent):void 
		{ 
			
			var is_hit_dest:Boolean = false; 
			var is_hit_target:Boolean = false; 
			var is_me:Boolean = false; 
			var is_ot:Boolean = false; 
			var helper:int = 0;
			var des_mc:MovieClip = new MovieClip(); 
			var des_mc1:MovieClip = new MovieClip(); 
			
			var tar_mc = event.target.parent; 
			for each(var _mc_test:MovieClip in is_occupied_obj) {//留住拖动物体的前世
				if (_mc_test != tar_mc && tar_mc.hitTestObject(_mc_test)) {
					trace("互换位置吧!" + tar_mc.name + " " + _mc_test.name);
					var tar_name = to_where_obj[tar_mc.name];
					var test_name = to_where_obj[_mc_test.name];
					
					tar_mc.x = initial_position_obj[test_name].x;
					tar_mc.y = initial_position_obj[test_name].y;
					
					_mc_test.x = initial_position_obj[tar_name].x;
					_mc_test.y = initial_position_obj[tar_name].y;
					
					is_occupied_obj[test_name] = tar_mc;	
					is_occupied_obj[tar_name] = _mc_test;	
					
					to_where_obj[tar_mc.name] = test_name; 
					to_where_obj[_mc_test.name] = tar_name; 
					is_hit_dest = true; 					
					}					
			}
			if (!is_hit_dest) {//通过奈何桥!
				delete is_occupied_obj[to_where_obj[tar_mc.name]]; 
				delete to_where_obj[tar_mc.name]; 
				}
			
			tar_mc.stopDrag(); 
			for (var i:Number = 0; i < destination_array.length; i++)//开始新的人生定位! 
			{  
				des_mc = destination_array[i]; 				
				if (!is_occupied_obj[des_mc.name] && tar_mc.hitTestObject(des_mc)) { 
					
					trace("选择位置了")
					is_occupied_obj[des_mc.name] = tar_mc;					
					to_where_obj[tar_mc.name] = des_mc.name; 
					tar_mc.x = initial_position_obj[des_mc.name].x; 
					tar_mc.y = initial_position_obj[des_mc.name].y; 
					is_hit_dest = true; 					
									
				} 
			}
			
			if (!is_hit_dest) { 
				tar_mc.x = initial_position_obj[tar_mc.name].x; 
				tar_mc.y = initial_position_obj[tar_mc.name].y; 
				
			} 
		} 
		
		private function onEnterFrame(event:Event):void
		{
			var resetFlag:Boolean = false;
			for(var temp in is_occupied_obj) {
					count++;
			} 		
			//trace(count);
			if(count==destination_array.length)
			{
				trace("disende!");
				for (var i:Number = 0; i < destination_array.length; i++) 
				{ 
					var des_mc:MovieClip = destination_array[i] as MovieClip; 
					//trace(des_mc.name);
					var tar_mc:MovieClip = is_occupied_obj[des_mc.name] as MovieClip;
					if (!des_mc.name.match(tar_mc.name)) {
							wrongSent.push(tar_mc);						
						}	
				}
				if (wrongSent.length == 0) {
					count = 0;
					return;
				}
				for (var i:Number = 0; i < wrongSent.length; i++) 
				{
					var tar_mc = wrongSent[i];
					delete is_occupied_obj[to_where_obj[tar_mc.name]]; 
					delete to_where_obj[tar_mc.name]; 
					tar_mc.x = initial_position_obj[tar_mc.name].x; 
					tar_mc.y = initial_position_obj[tar_mc.name].y;	
					
				}
				wrongSent.splice(0);
			}
			count = 0;
			
		}
		function mouseMoveHandler(event:MouseEvent):void {
			event.updateAfterEvent(); 
		} 
			

				
		
	}

}
分享到:
评论

相关推荐

    多边型Hit test算法实例

    多边形Hit Test算法是这一技术的具体应用,尤其对于二维和三维图形的交互式应用至关重要。在本范例程序中,我们将探讨如何在MFC(Microsoft Foundation Classes)框架下实现多边形的Hit Test功能。 首先,理解...

    Test_Hit.zip_DEMO

    《Test_Hit.zip_DEMO——探索碰撞检测技术的实践应用》 在计算机图形学和游戏开发领域,碰撞检测是一项至关重要的技术。它涉及到物体之间的相互作用,是模拟真实世界物理现象的关键部分。本文将深入探讨“Test_Hit....

    cd-hit-user-guide.pdf 学习cd-hit新手必备!

    cd-hit是一款由来自加州大学圣地亚哥分校的李伟中(Weizhong Li)实验室开发的快速蛋白质聚类程序。其核心优势在于其超高速度,可比其他聚类程序快上数百倍,例如BLASTCLUST,因此可以处理非常大型的数据库,如非...

    psi-cd-hit脚本

    **psi-cd-hit脚本** 是一个用于序列比对和聚类的工具,尤其适用于处理具有低于40%相似性的序列。在生物信息学中,序列聚类是研究基因组、蛋白质组或转录组数据时的一个关键步骤,它可以帮助我们识别和去除重复序列,...

    hit-oslab-linux0.11

    "hit-oslab-linux0.11" 是一个与学习Linux操作系统相关的压缩包,特别适合那些在网易云课堂上进行Linux0.11课程学习的学生。这个压缩文件包含了环境配置的全套工具,使得用户可以在实验楼这样的虚拟环境中亲自搭建...

    US Test1_socialjy7_matlab_ustest_US-Test_图像标注_

    这些图像文件很可能是超声图像样本,而hitandmiss_3.m可能是一个MATLAB脚本,其中包含了实现图像处理算法的代码,比如使用了“Hit-and-Miss”操作,这是一种常见的形态学图像处理方法,用于检测特定形状或结构。...

    哈工大停用词表hit_stopwords

    哈工大停用词表hit_stopwords

    Unity 3D的hit slashes源码.zip

    在Unity 3D游戏开发中,"hit slashes"通常指的是角色攻击时产生的视觉效果,比如剑击、刀砍等动作的动态切痕或粒子效果。这个压缩包文件"Unity 3D的hit slashes源码.zip"包含的是实现这种效果的源代码。下面将详细...

    Hit Fm联播网 1.4

    Hit Fm联播网 版本:1.4 大小:12 MB 语言:中文 适用固件:Android 2.3.3及以上 分享日期:2014-11-03 游戏题材:音乐 开发商:Olis Innovation Inc. 内容介绍 **热情PLAY,只想听音乐** 广播不只能听,还能用看...

    Ragdoll - Hit Reaction Manager 2.0 unity布娃娃系统

    Ragdoll - Hit Reaction Manager 2.0 布娃娃系统插件,由于过大,上传txt云盘下载

    HIT-UAV红外小目标数据集

    HIT-UAV包含从43470帧中提取的2898幅红外热图像,由无人机从不同场景(学校、停车场、道路、游乐场等)捕获,涵盖了广泛的方面,包括物体(人、自行车、汽车、其他车辆)、飞行高度数据(60至130米)、相机透视数据...

    HIT-UAV:无人机高空红外热数据集

    此外,HIT-UAV 为每张图像提供基本的飞行数据,包括飞行高度、相机视角、日期和日照强度。对于每张图像,我们使用两种类型(定向和标准)的边界框手动注释对象实例,以应对航空图像中对象实例大量重叠的挑战。

    攻防世界hit-the-core,杂项misc

    攻防世界hit-the-core,杂项misc。 此题详细解题博客:https://blog.csdn.net/m0_59188912/article/details/127626829

    HIT【异质结】电池技术调研.doc

    【HIT电池技术详解】 HIT电池,全称为Heterojunction with Intrinsic Thin-layer电池,是一种基于本征薄膜异质结的太阳能电池技术。这种电池的核心在于采用超薄的非晶硅(a-Si)薄膜作为p/i和i/n型薄膜,分别沉积在...

    SURPASS-hiT-7060.zip_HIT 7060_siemens h

    6. **SURPASS_hiT_7060_Installation_and_Test_Manual_3.pdf**:安装和测试手册指导用户如何正确地安装设备,包括物理安装、网络配置、系统校准以及初步的功能测试。它会确保设备在启用前满足所有的安全和性能标准。...

    光伏设备:HIT设备订单即将进入放量阶段,推荐弹性高的设备龙头.pdf

    HIT(异质结技术)设备是光伏领域中新一代高效太阳能电池生产设备。报告中提到HIT设备订单即将进入放量阶段,意味着相关设备的需求将大幅提升,对于整个光伏产业链的设备供应商来说,这无疑是一个积极的信号。本文将...

    机械设备行业周报:HIT电池片技术应用趋势下设备国产化有望加快.pdf

    HIT电池片技术是一种高效光伏技术,其全称为异质结(Heterojunction)绝缘体接触晶体硅太阳能电池。HIT电池片在提高光电转换效率和降低电力成本方面具有明显优势,预计随着技术应用趋势的明朗化,机械设备行业在HIT...

    HiTV.apkHiTV.apkHiTV.apk

    HiTV.apk

    蛋堡 - Hit The Rhyme

    根据给定的信息,“蛋堡 - Hit The Rhyme”是一首歌曲,从提供的LRC歌词文件来看,这首歌包含了多个部分,包括节奏、韵律以及具体的歌词内容。下面将从歌词格式、歌曲内容等方面进行详细的解析。 ### LRC歌词格式 ...

Global site tag (gtag.js) - Google Analytics