【ActionScript】使用鼠标移动元件与元件相交判断函数hitTest

在《【ActionScript】使用键盘移动元件》(点击打开链接)中介绍了键盘如何与ActionScript2.0交互。本文继续介绍鼠标如何与ActionScript2.0的交互。其实鼠标与ActionScript2.0的交互在《【ActionScript】利用复制影片duplicateMovieClip与鼠标拖动跟随startDrag做出鼠标移动特效》(点击打开链接)已经展示过了,只是这个程序中,鼠标与ActionScript2.0的交互不是主角。

下面写出如下的程序,来说明这个问题:

图中有两个半圆,可以被鼠标任意拖动,它们相交与否在屏幕的左上角给出提示。

一、基本布局

1、首先在Flash中新建一个ActionScript2.0的文档,利用椭圆工具拖出一个椭圆。之后利用选择工具选择椭圆的一半,将其转化为元件。另一半,则用选择工具,单击,选中之后同样如此,转化为元件。

2、之后,利用文本工具,在屏幕的左上角,加入一个动态文本,设置其X:0,Y:0,400x100,字体为40px,消除锯齿为“使用设备字体”,关键是在“选项”一栏,赋予其变量名为"txt"

二、脚本编程

1、对两个半圆分别添加动作,如《【ActionScript】使用键盘移动元件》(点击打开链接)一样,而不是时间轴。

对于左半圆,其脚本如下,hisTest的返回值为true或false,如果两组件相交则true,否则false。

on (press) {//鼠标在此元件左键按下的事件
	startDrag("_root.left",false);//开始拖动,拖动时,不强制鼠标在此元件的中心
	if (_root.left.hitTest(_root.right))//如果左半圆与右半圆相交与否,在动态文本显示
	{
		_root.txt = "相交";
	}
	else
	{
		_root.txt = "不相交";
	}
}
on (release) {//鼠标在此元件左键按下并释放的事件
	if (_root.left.hitTest(_root.right))
	{
		_root.txt = "相交";
	}
	else
	{
		_root.txt = "不相交";
	}
	stopDrag();//停止拖动
}

2、之后的右半圆的脚本同理,只是变更了对象名而已。

on (press) {
	startDrag("_root.right",false);
	if (_root.left.hitTest(_root.right))
	{
		_root.txt = "相交";
	}
	else
	{
		_root.txt = "不相交";
	}
}
on (release) {
	if (_root.left.hitTest(_root.right))
	{
		_root.txt = "相交";
	}
	else
	{
		_root.txt = "不相交";
	}
	stopDrag();
}

至此,这个程序写完。同样是鼠标拖动事件。《【ActionScript】利用复制影片duplicateMovieClip与鼠标拖动跟随startDrag做出鼠标移动特效》(点击打开链接)强制,鼠标移动时,强制把鼠标归于元件的中心。这里则不是。

时间: 2024-10-09 01:13:53

【ActionScript】使用鼠标移动元件与元件相交判断函数hitTest的相关文章

矩形相交判断

[转载]矩形相交判断 问题重述? Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined by its bottom left corner and top right corner as shown in the figure. 矩形相交 Assume that the total area is never beyond the maximum pos

poj 2653 (线段相交判断)

http://poj.org/problem?id=2653 Pick-up sticks Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 9531   Accepted: 3517 Description Stan has n sticks of various length. He throws them one at a time on the floor in a random way. After finishi

zoj 1010 (线段相交判断+多边形求面积)

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=10 Area Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge Jerry, a middle school student, addicts himself to mathematical research. Maybe the problems he has thought are

poj 1410 线段相交判断

http://poj.org/problem?id=1410 Intersection Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11329   Accepted: 2978 Description You are to write a program that has to decide whether a given line segment intersects a given rectangle. An ex

ACM1558两线段相交判断和并查集

Segment set Problem Description A segment and all segments which are connected with it compose a segment set. The size of a segment set is the number of segments in it. The problem is to find the size of some segment set. Input In the first line ther

POJ 1410 Intersection(线段相交&&判断点在矩形内&&坑爹)

Intersection 大意:给你一条线段,给你一个矩形,问是否相交. 相交:线段完全在矩形内部算相交:线段与矩形任意一条边不规范相交算相交. 思路:知道具体的相交规则之后题其实是不难的,但是还有个坑点就是题目里明明说给的是矩形左上角跟右下角的点,但实际上不是,需要重新判断一下...真坑. 1 struct Point 2 { 3 double x, y; 4 } A, B, C, D; 5 struct Line 6 { 7 Point a, b; 8 } L; 9 10 int n; 11

Python与数据结构[0] -> 链表[2] -> 链表有环与链表相交判断的 Python 实现

链表有环与链表相交判断的 Python 实现 目录 有环链表 相交链表 1 有环链表 判断链表是否有环可以参考链接, 有环链表主要包括以下几个问题(C语言描述): 判断环是否存在: 可以使用追赶方法,定义两个指针slow和fast,分别以1步和2步前进,若存在环则两者会相遇,否则fast遇到NULL时则退出: 获取环的长度:若存在环,则以相遇点为起点,fast和slow再次开始前进,第二次碰相遇slow走过的步数(1圈)即为环长度: 找出入环点:相遇点到连接点的距离 = 头指针到连接点的距离,因

判断函数是否存在

当我们创建了自定义函数,并且了解了可变函数的用法,为了确保程序调用的函数是存在的,经常会先使用function_exists判断一下函数是否存在.同样的method_exists可以用来检测类的方法是否存在. 判断函数是否存在 function_exists()function func() { } if(function_exists('func')){ echo"存在"; } 判断类是否存在 class_exists()class func { } // 使用前检查类是否存在 if

判断函数传递的参数个数

看zepto源码时,看到了很多基于1 in arguments和0 in arguments的判断. 基本了解是在判断函数调用时,是否传递了需要的参数, 但真心不明白这个0和1究竟是啥. 经高人指点,其实应当是arguments类数组的下标. i当做arguments的属性,输出. 当判断1的时候,表示如果存在至少两个参数,才会输出1,否则不会输出任何内容. 即0和1或者更大的数字,是类数组的arguments的下标.