访问actionscript类中的计时器

时间:2013-12-17 17:10:41

标签: actionscript-3 flash class timer

我最近开始编写as3编程,最近,我开始学习面向对象编程。我的问题是访问类中的函数。我想“主要”代码不太适合这样做,但我只是在为代码的每个部分寻求建议。

主要代码:

import flash.utils.Timer;
import flash.events.TimerEvent;

stage.addEventListener(MouseEvent.CLICK, makeCircle);
function makeCircle(event:MouseEvent):void
{
    var s = new Circle();
    addChild(s);

    s.x = mouseX;
    s.y = mouseY;
}

类代码(连接到内置MovieClip填充的MovieClip圈):

package 
{

    import flash.display.MovieClip;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.filters.BlurFilter;
    import flash.geom.ColorTransform;

    public class Circle extends MovieClip
    {

        private var t:Timer = new Timer(30,1000);
        var time:Number = 0;
        var size:Number;
        var bf = new BlurFilter();
        var ct:ColorTransform = new ColorTransform();

        public function Circle()
        {

            // constructor code
            t.addEventListener(TimerEvent.TIMER, updateCircle);
            t.start();
            ct.color = 0xffffff * Math.random();
            fill.transform.colorTransform = ct;

            fill.blendMode = "hardlight";

        }

        public function updateCircle(event:TimerEvent):void
        {

            time = t.currentCount / 10;
            size = Math.pow(Math.E, - time) * Math.sin(5 * time) * (Math.log(time));
            width = (size * 20 + 100 - time * 5) * 2;
            height = (size * 20 + 100 - time * 5) * 2;
            bf.blurX = time;
            bf.blurY = time;

            filters = [bf];
            alpha = 1 - time / 20;

        }

    }

}

我想要做的是当t.currentCount(类代码)是一个设定值(当alpha值为0时)删除s(主代码)的子代。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你想要做的就是在你的计时器完成时触发的Circle类中创建一个偶数(alpha == 0)。自定义事件必须在您的主类中捕获。

要在主类中添加自定义事件侦听器,请写:

s.addEventListener("RemoveChild", removeChild)

添加处理函数

function removeChild(e:Event)
{
   removeChild(s);
}

在您的圈子类中,您可以在想要触发时添加事件:

this.dispatchEvent(new Event("RemoveChild");

或者你可以通过在那里放置循环来控制主类的Alpha值并调用removeChild(s);直接

让自定义事件有效的一种简单方法是使用AS3Signals框架。

希望有所帮助