2016-05-05 12 views
0

Ich versuche gerade einen Kreis mit graphics.linestyle und graphics.drawCircle mit einem Mausklick zu erstellen. Nach dem Mausklick möchte ich den Kreis auf der Bühne erweitern, bis der Radius 150 erreicht. Ich habe es mit diesem Code versucht, aber es nicht zum Laufen gebracht.Zunehmende Größe auf einem Grafikkreis

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; 
     } 
    } 
} 

Antwort

1
  • Pop die verschachtelte Funktion in den globalen Namespace aus.
  • Machen Sie wiederkehrende Variablen global. Nachdem Sie den Wert radius erhöht haben, müssen Sie den Kreis neu zeichnen.
  • Da Sie nur die Kante zeichnen, müssen Sie den Kreis bei jedem Update löschen.
  • Nicht verwendete Ereignislistener wurden entfernt, wenn die Animation abgeschlossen ist.

Dies wird es beheben. Sie können es in einem leeren Projekt ausführen und es wird kompiliert und funktioniert. Klicken Sie einfach irgendwo im Hintergrund, und es wird ausgeführt.

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); 
    } 
} 
Verwandte Themen