AS3 перетащите n drop на один объект - PullRequest
0 голосов
/ 03 марта 2011

(я не очень хорош в AS, поэтому, пожалуйста, будьте милы :))

Я работаю над простой флеш-игрой, в которой есть 8 маленьких кружков за пределами одного большого круга. я хочу перетащить этот 8 маленький круг один за другим в большой круг.

В основном 1 тарелка с едой. Перетаскивая их еду на тарелку. Я надеюсь, что это даст вам лучшую идею. Я замаскировал то же самое, но не смог получить то, что хочу, :(

Пожалуйста, предложите мне сценарий или метод.

Если есть какие-либо ссылки или ссылки, пожалуйста, дайте мне знать, я был бы очень признателен.

Спасибо

Кунал (Веб-дизайнер)

1 Ответ

0 голосов
/ 03 марта 2011

Этот код протестирован и работает.Класс DummyCircle просто рисует центрированный круг для своего графического объекта при создании экземпляра.

private var plate:Sprite;
private var stage:Stage;

public function execute(stage:Stage):void 
{
    this.stage = stage;
    // number of pieces around the centered plate
    const numPieces:int = 8;
    const plateRadius:int = 50;
    plate = new DummyCircle(plateRadius);
    // center plate on the stage
    plate.x = stage.stageWidth / 2;
    plate.y = stage.stageHeight / 2;
    stage.addChild(plate);
    // for each piece to be created
    for (var i:int = 0; i < numPieces; i++) {
        // instantiate the appropriate sprite, here with a radius argument
        var piece:Sprite = new DummyCircle(plateRadius / numPieces);
        // add event listener for dragging
        piece.addEventListener(MouseEvent.MOUSE_DOWN, mouseListener);
        piece.addEventListener(MouseEvent.MOUSE_UP, mouseListener);
        // pieces are in the top left corner of the stage, plate is centered
        piece.x = 0;
        piece.y = 0;
        // a transformation matrix is used for positioning the pieces
        // get the current matrix
        var pieceMatrix:Matrix = piece.transform.matrix;
        // move a bit more than the plate radius on the y axis
        pieceMatrix.translate(0, -plateRadius * 1.5);
        // rotate around the origin
        pieceMatrix.rotate(i * (2 * Math.PI / numPieces));
        // move again, this time to our plate
        pieceMatrix.translate(plate.x, plate.y);
        // apply the matrix
        piece.transform.matrix = pieceMatrix;
        stage.addChild(piece);
    }
}

private function mouseListener(e:MouseEvent):void 
{
    if (e.target is Sprite) {
        var target:Sprite = e.target as Sprite;
        if (e.type == MouseEvent.MOUSE_UP) {
            target.stopDrag();
            if (target.hitTestObject(plate)) {
                stage.removeChild(target);
            }
        }
        else if (e.type == MouseEvent.MOUSE_DOWN) {
            target.startDrag();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...