2016-05-05 18 views
0

現在、graphics.linestyleとgraphics.drawCircleをマウスで使用して円を作成しようとしています。マウスクリックの後、私は円が150に達するまで舞台上を拡大したいと思っています。私はこのコードで試しましたが、うまく動作しません。グラフィックサークルのサイズを増やす

import flash.events.MouseEvent; 
import flash.display.Sprite; 
import flash.events.Event; 

var circle:Sprite = new Sprite(); 

knapp.addEventListener(MouseEvent.CLICK, push); 

function push (evt:MouseEvent) { 

    var radius:Number = 10; 
    var incRadius:Number = 3; 

    circle.graphics.lineStyle(3, 0xff000, 1); 
    circle.graphics.drawCircle(200, 200, radius); 

    addChild(circle); 

    circle.addEventListener(Event.ENTER_FRAME, increase); 
    function increase (evt:Event) { 
     if (radius <= 150) { 
      radius += incRadius; 
     } 
    } 
} 

答えて

1
  • グローバル名前空間にネストされた関数をポップアウト。
  • 繰り返し変数をグローバルにします。
  • radiusを増やした後、円を再描画する必要があります。
  • エッジを描画するだけなので、更新ごとにサークルをクリアする必要があります。
  • アニメーションが完了したら、未使用のイベントリスナーを削除しました。

これで修正されます。あなたは空のプロジェクトでそれを実行することができ、コンパイルして動作します。背景のどこかをクリックするだけで、実行されます。

import flash.events.MouseEvent; 
import flash.display.Sprite; 
import flash.events.Event; 

var circle:Sprite = new Sprite(); 
addChild(circle); 
var radius:Number = 10; 
var incRadius:Number = 3; 

stage.addEventListener(MouseEvent.CLICK, push); 

function push(e:MouseEvent) { 
    radius = 10; 

    circle.graphics.clear(); 
    circle.graphics.lineStyle(3, 0xff000, 1); 
    circle.graphics.drawCircle(0, 0, radius); 
    circle.x = stage.mouseX; 
    circle.y = stage.mouseY; 

    circle.addEventListener(Event.ENTER_FRAME, increase); 
} 

function increase(e:Event) { 
    radius += incRadius; 

    if (radius > 150) { 
     circle.removeEventListener(Event.ENTER_FRAME, increase); 
    } else { 
     circle.graphics.clear(); 
     circle.graphics.lineStyle(3, 0xff000, 1); 
     circle.graphics.drawCircle(0, 0, radius); 
    } 
} 
関連する問題