Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>This code is tested and works. The class <strong>DummyCircle</strong> just draws a centered circle to its graphics object when instantiated.</p> <pre><code>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 &lt; 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(); } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload