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实现的。
哈工大停用词表hit_stopwords
配套网易云课堂学习linux0.11,内有环境配置全套工具,实验楼实验环境可亲自搭建。学习操作系统不二之选。
psi-cd-hit用于低于40%相似性的序列聚类,是直接从github上拷贝过来的代码哈,大家也可以直接去github上下载就行。
我们经过三年的系统工作,建立了一个包含约20万字的HIT-MW中文手写文本库(英文全称为Harbin Institute of Technology-Multiple Writers Database,中文名称为哈尔滨工业大学多人手写库,缩写为HIT-MW库),用于研究...
Hit Fm联播网 版本:1.4 大小:12 MB 语言:中文 适用固件:Android 2.3.3及以上 分享日期:2014-11-03 游戏题材:音乐 开发商:Olis Innovation Inc. 内容介绍 **热情PLAY,只想听音乐** 广播不只能听,还能用看...
一个关于碰撞检查的小DEMO,有兴趣的可以下来看看
这是HIT软件设计一要做的实验,从线性结构到图的大部分代码
HIT_stop_words(停用词表):停用词表通常包含在文本分析中需要忽略的常见词汇,如“的”、“是”、“在”等。在智能营销中,停用词表有助于减少数据噪声,提高文本分析的效率和准确性,特别是在处理用户评论、反馈...
Ragdoll - Hit Reaction Manager 2.0 布娃娃系统插件,由于过大,上传txt云盘下载
HIT-Alibaba 笔试面试知识整理 HIT-Alibaba 笔试面试知识整理
Unity 3D的hit slashes源码
HITV9网络播放器 测试电视源地址工具 本地全格式播放器
summer_hit_final_by_bestsummer-d45pyxg foobar2000夏日冲击最终版
HIT软件构造复习资料,同学总结的,作为分享,可供参考
Bill hit his car into a wall last nightBill hit his car into a wall last nightBill hit his car into a wall last nightBill hit his car into a wall last night
MFC的图书管理系统 作者开发周期过长导致代码冗长且无优化,但是可以正常运行,并实现的全部功能 发现几个bug,没有改,一...去ftp://run.hit.edu.cn下载visual studio2012可以直接打开,不要用VC6.0这个古董级的东西了
Ragdoll - Hit Reaction Manager 2.0 需要的拿走,版权归原作者所有,重在分享与使用
开源项目-hit9-oo.zip,只是简单的shell来帮助在go版本之间切换
cd-hit是非常快速的、是中国人(Weizhong Li)写的,很好用,最大的特点就是快。基本思路是首先对所有序列按照其长度进行排序,然后从最长的序列开始,形成第一个序列类,然后依次对序列进行处理,如果新的序列与已...