2011-03-03 3 views
-1

(私はいいことしてくださいように良くないです:))私は、単純なフラッシュゲームに取り組んでいますAS3ドラッグは、n一つの大きな円の側面を8つの小さな円をそこにrはここで1つのオブジェクト

にドロップします。この8つの小さなサークルを1つずつ大きなサークルにドラッグしたいと思います。

基本的に1枚の食べ物があります。食べ物を食卓に捨てます。これがあなたに良いアイデアを与えることを願っています。 私は、それを同じことをgoggledしているが、私が欲しいものを得ることができませんでした:(

私のスクリプトまたは方法を提案してください。

任意のリンクやtutsがある場合、私は私は本当に感謝お知らせください。

おかげで、

クナル 。 - このコードはテストされ、機能している

答えて

0

クラスDummyCircleはちょうどそのgの中心に円を描く(ウェブデザイナー)インスタンス化されたときのraphicsオブジェクト。

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(); 
     } 
    } 
} 
関連する問題