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算法是这一技术的具体应用,尤其对于二维和三维图形的交互式应用至关重要。在本范例程序中,我们将探讨如何在MFC(Microsoft Foundation Classes)框架下实现多边形的Hit Test功能。 首先,理解...
《Test_Hit.zip_DEMO——探索碰撞检测技术的实践应用》 在计算机图形学和游戏开发领域,碰撞检测是一项至关重要的技术。它涉及到物体之间的相互作用,是模拟真实世界物理现象的关键部分。本文将深入探讨“Test_Hit....
cd-hit是一款由来自加州大学圣地亚哥分校的李伟中(Weizhong Li)实验室开发的快速蛋白质聚类程序。其核心优势在于其超高速度,可比其他聚类程序快上数百倍,例如BLASTCLUST,因此可以处理非常大型的数据库,如非...
**psi-cd-hit脚本** 是一个用于序列比对和聚类的工具,尤其适用于处理具有低于40%相似性的序列。在生物信息学中,序列聚类是研究基因组、蛋白质组或转录组数据时的一个关键步骤,它可以帮助我们识别和去除重复序列,...
"hit-oslab-linux0.11" 是一个与学习Linux操作系统相关的压缩包,特别适合那些在网易云课堂上进行Linux0.11课程学习的学生。这个压缩文件包含了环境配置的全套工具,使得用户可以在实验楼这样的虚拟环境中亲自搭建...
这些图像文件很可能是超声图像样本,而hitandmiss_3.m可能是一个MATLAB脚本,其中包含了实现图像处理算法的代码,比如使用了“Hit-and-Miss”操作,这是一种常见的形态学图像处理方法,用于检测特定形状或结构。...
哈工大停用词表hit_stopwords
在Unity 3D游戏开发中,"hit slashes"通常指的是角色攻击时产生的视觉效果,比如剑击、刀砍等动作的动态切痕或粒子效果。这个压缩包文件"Unity 3D的hit slashes源码.zip"包含的是实现这种效果的源代码。下面将详细...
Hit Fm联播网 版本:1.4 大小:12 MB 语言:中文 适用固件:Android 2.3.3及以上 分享日期:2014-11-03 游戏题材:音乐 开发商:Olis Innovation Inc. 内容介绍 **热情PLAY,只想听音乐** 广播不只能听,还能用看...
Ragdoll - Hit Reaction Manager 2.0 布娃娃系统插件,由于过大,上传txt云盘下载
HIT-UAV包含从43470帧中提取的2898幅红外热图像,由无人机从不同场景(学校、停车场、道路、游乐场等)捕获,涵盖了广泛的方面,包括物体(人、自行车、汽车、其他车辆)、飞行高度数据(60至130米)、相机透视数据...
此外,HIT-UAV 为每张图像提供基本的飞行数据,包括飞行高度、相机视角、日期和日照强度。对于每张图像,我们使用两种类型(定向和标准)的边界框手动注释对象实例,以应对航空图像中对象实例大量重叠的挑战。
攻防世界hit-the-core,杂项misc。 此题详细解题博客:https://blog.csdn.net/m0_59188912/article/details/127626829
【HIT电池技术详解】 HIT电池,全称为Heterojunction with Intrinsic Thin-layer电池,是一种基于本征薄膜异质结的太阳能电池技术。这种电池的核心在于采用超薄的非晶硅(a-Si)薄膜作为p/i和i/n型薄膜,分别沉积在...
6. **SURPASS_hiT_7060_Installation_and_Test_Manual_3.pdf**:安装和测试手册指导用户如何正确地安装设备,包括物理安装、网络配置、系统校准以及初步的功能测试。它会确保设备在启用前满足所有的安全和性能标准。...
HIT(异质结技术)设备是光伏领域中新一代高效太阳能电池生产设备。报告中提到HIT设备订单即将进入放量阶段,意味着相关设备的需求将大幅提升,对于整个光伏产业链的设备供应商来说,这无疑是一个积极的信号。本文将...
HIT电池片技术是一种高效光伏技术,其全称为异质结(Heterojunction)绝缘体接触晶体硅太阳能电池。HIT电池片在提高光电转换效率和降低电力成本方面具有明显优势,预计随着技术应用趋势的明朗化,机械设备行业在HIT...
HiTV.apk
根据给定的信息,“蛋堡 - Hit The Rhyme”是一首歌曲,从提供的LRC歌词文件来看,这首歌包含了多个部分,包括节奏、韵律以及具体的歌词内容。下面将从歌词格式、歌曲内容等方面进行详细的解析。 ### LRC歌词格式 ...