グリッドを色付きのタイルで覆うという単純なゲームの作成に問題があります。 Arrayを使用してドラッグ&ドロップ機能を設定しましたが、グリッド上の場所に簡単にスナップする方法はありません。私はグリッド上の場所をsnapA1からsnapJ10までの名前のムービークリップにしました。文字列とインスタンス名は10個ずつグループ化されていましたが、移動する必要がないので、これらのクリップはArrayから削除されています。私が抱えている問題は、私が使用する関数は単一の場所にスナップすることができるだけであるということです。基本的には、2つ以上のオブジェクトのグループが互いの上にスナップすることを可能にする短い手を探しているだけです。好ましくは、ブルートフォースコードを使わずに、私は同じコードのインスタンスを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;
}}
これは、コードのインスタンスを1つだけ使用して行うことができます。あなたの 'greenTables'インスタンスはすべて同じライブラリオブジェクトですか? – BadFeelingAboutThis
グリッドをもう少し説明できますか? (目に見えるもの、水平/垂直の線の数、FlashProで作成する必要があるのか、それともコードで行う必要があるのだろうか?) - 可能性が高い - グリッドとオブジェクトが背景グラフィックに対応していて、あなたはこれをコードのごく少数の行で行うことができます。 – BadFeelingAboutThis