在制作涉及用彩色图块覆盖网格的简单游戏时遇到问题。我已经使用 Arrays 来建立拖放功能,但找不到一种方法可以轻松地将它们捕捉到网格上的位置。我已将网格上的位置制作成影片剪辑,其名称为 snapA1 到 snapJ10,所有这些都以 10 个字母为一组,并具有要匹配的实例名称,但这些剪辑已从数组中删除,因为它们不需要移动。我一直遇到的问题是,我使用的任何功能都只能用于允许捕捉到单个位置。基本上,我只是在寻找一种快捷方式,以允许两组或更多组对象相互捕捉,最好不必使用蛮力代码,我不骗你,相同代码的 20,000 个实例。下面是我到目前为止只允许一个捕捉目标位置的代码
import flash.events.Event;
import flash.events.MouseEvent;
var greenArr:Array = new Array
(greenTablet1, greenTablet2, greenTablet3, greenTablet4, greenTablet5,
greenTablet6, greenTablet7, greenTablet8, greenTablet9, greenTablet10,
greenTablet11, greenTablet12, greenTablet13, greenTablet14, greenTablet15,
greenTablet16, greenTablet17, greenTablet18, greenTablet19, greenTablet20);
for (var i1:uint =0; i1 < greenArr.length; i1++) {
greenArr[i1].addEventListener(MouseEvent.MOUSE_DOWN, dragG);
greenArr[i1].addEventListener(MouseEvent.MOUSE_UP, dropG);
}
function dragG(event:MouseEvent):void {
event.currentTarget.startDrag();
}
function dropG(event:MouseEvent):void {
event.currentTarget.stopDrag();
}
stage.addEventListener(MouseEvent.MOUSE_UP, stopMotionG1);
function stopMotionG1(evt:MouseEvent):void {
snapInPlaceG1();
}
function snapInPlaceG1():void {
if (snapA1.hitTestObject(greenTablet1)) {
greenTablet1.x = snapA1.x;
greenTablet1.y = snapA1.y;
}}