1
    var theTextField:TextField = new TextField();
    var theText:TextField = new TextField();

    theTextField.type = TextFieldType.INPUT;
    theTextField.border = true;
    theTextField.x = 50;
    theTextField.y = 10;
    theTextField.height = 20;
    theTextField.multiline = true;
    theTextField.wordWrap = true;

    theText.border = false;
    theText.x = 10;
    theText.y = 10;
    theText.text = "Angle";
    addChild(theText);
    addChild(theTextField);


    submit.addEventListener(MouseEvent.CLICK, click_handler);
    function click_handler(event:MouseEvent):void
    {
       var txt:String = theTextField.text;
       ang = Number(txt);

       if (ang<0)
       {
          angle =  -  ang;
       }
       else
       {
          angle = 360 - ang;

        }
       var circleSlider:CircleSlider=new CircleSlider(120,angle); //draw Circle    According to the angle i think here is problem becoz every time clicked it creates new circle and draw over the old circle.


       circleSlider.x = stage.stageWidth / 2;
       circleSlider.y = stage.stageHeight / 2;
       circleSlider.addEventListener(CircleSliderEvent.CHANGE,  circleSliderEventHandler);
       addChild(circleSlider);
           }

誰かが私を助けることができますか?

      var circleSlider:CircleSlider=new CircleSlider(120,angle);//draw Circle    According to the angle i think here is problem becoz every time clicked it creates new circle and draw over the old circle.

このコードが問題です。CircleSliderは別のクラスです。私はこのように試しました

      circleSlider.CircleSlider(120,angle);  

ただし、「静的タイプCircleSliderの参照を介して、未定義の可能性のあるメソッドCircleSliderを呼び出す」というエラーが発生します。

プログラムを実行し、値を90として入力したとき。 123

次に、180として別の値を入力すると、次のようになります。 1233

どうすればこのエラーを克服できますか

4

1 に答える 1

0

クリックハンドラーが実行されるたびに、サークルクラスの新しいインスタンスが作成され、古いインスタンスを削除せずにステージに追加されます。CircleSliderそれを解決する最善の方法は、クラスのコンストラクターにあるロジックを別のパブリックメソッドに移動することだと思います。たとえばdraw、クリックハンドラーでそれを呼び出します。

コードは次のようになります。

// Set up the circle once
var circleSlider = new CircleSlider();
circleSlider.x = stage.stageWidth / 2;
circleSlider.y = stage.stageHeight / 2;
circleSlider.addEventListener(CircleSliderEvent.CHANGE,  circleSliderEventHandler);

// and add it to the stage once
addChild(circleSlider);

function click_handler(event:MouseEvent):void
{
       var txt:String = theTextField.text;
       ang = Number(txt);

       if (ang<0)
       {
          angle =  -  ang;
       }
       else
       {
          angle = 360 - ang;

      }
        // Now simply redraw in the same circle instance
       circleSlider.draw(120,angle); //draw Circle    According to the angle i think here is problem becoz every time clicked it creates new circle and draw over the old circle.
}

描画APIを使用してグラフィックを描画していると仮定すると、コンストラクターで円(一定のように見える)を描画し(1回)、描画メソッドで角度を示す線を(繰り返し)描画できます。次のように、毎回古い行をクリアする必要があります。

// Assumes you're drawing in the graphics property of the class
this.graphics.clear(); 
于 2013-02-27T13:44:14.127 に答える