今天写了一个简单的教程【版本FL8.0 (AS2.0)】,初级学者能看懂的顶一下。
用FL做一个拼图的游戏。
关键词:hitTest、startDrag
一、hitTest()的用法
(1)my_mc.hitTest(x,y,shapeFlag)
参数:
x:舞台上单击区域的x坐标
y:舞台上单击区域的x坐标
shapeFlag:一个布尔值,指定是计算机指定实例的整个形状(true)还是仅计算边框(false)
。只有当用x和y坐标参数识别单击区域时,才可以指定该参数。
(2)my_mc.hitTest(target)
target:可能与由my_mc指定的实例交叉或重叠的单击区域的目标路径target参数通常表示一个按
钮或文本输入字段。
下面的示例使用带有_xmouse和_ymouse属性的hitText()来确定鼠标指针是否位于目标的边框上
方:
if(hitText(_root._xmouse,_root._ymouse,false));
二、startDrag()的用法
startDrag(target,[lock,left,top,right,bottom])
target:要拖动的影片剪辑的目标路径。
lock:一个布尔值,指定可拖动影片剪辑是锁定到鼠标的位置中央(true),还是锁定到用户首次
单击该影片剪辑的位置上(false)。此参数是可选的。
left,top,right,bottom:相对于影片剪辑父级坐标的值,这些值指定该影片剪辑的约束矩形。
这些参数是可选的。
说明:一次只能拖动一个影片剪辑。执行了startDrag()操作后,影片剪辑将保持可拖动的状态,
直到用stopDrag()明确停止拖动为止,或直到对其它影片剪辑调用了stopDrag()动作为止。
开始动手制作做一个拼图的游戏:
原理:一一对应的两个影片剪辑m1和p1,m2和p2,m3和p3……
m1用来记录p1正确的位置的坐标的影片剪辑,在场景中放于合适的位置
p1是用户拖动到合适的位置的影片剪辑,在场景中置于任意位置
m2、m3……mn与m1同理
p2、p3……pn与p1同理
以下是写三个作为例子,有n个就写n个。
在帧上写代码:
m1._visible=false;
m2._visible=false;
m3._visible=false;//使m1、m2、m3不可视
x1 = p1._x; y1 = p1._y;
x2 = p2._x; y2 = p2._y;
x3 = p3._x; y3 = p3._y;
tx1 = m1._x; ty1 = m1._y;
tx2 = m2._x; ty2 = m2._y;
tx3 = m3._x; ty3 = m3._y;
//保存所有instance的坐标位置
在影片剪辑p1上写代码:
onClipEvent (mouseDown) {
if (hitTest(_root._xmouse, _root._ymouse, false)) {
startDrag(this, true);//鼠标按下该影片剪辑时,如果鼠标指针位于p1的边框上方,则拖动该影片剪辑
}
}
onClipEvent (mouseUp) {
stopDrag();
if (this.hitTest(this._parent.m1)) {
_x = _root.tx1;
_y = _root.ty1;//鼠标松开则停止拖动该影片剪辑,如果碰到了m1,则使它位于m1的位置
} else {
_x = _root.x1;
_y = _root.y1;//否则使它回到原来的位置
}
}
p2、p3影片剪辑上的代码依此类推……
延伸:利用这样的拼图游戏,我们可以做一些课件比如将正确的答案拖动到正确的位置,重新排列顺序
,化学课件里经常会用到的将试验的器材重新组装等等。
[ 本帖最后由 koala 于 2008-10-24 16:40 编辑 ] |