增加图形圈的大小

时间:2016-05-05 07:00:34

标签: function graphics actionscript

我目前正在尝试使用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 个答案:

答案 0 :(得分: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);
    }
}