我最近开始编写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(主代码)的子代。
提前致谢。
答案 0 :(得分:0)
你想要做的就是在你的计时器完成时触发的Circle类中创建一个偶数(alpha == 0)。自定义事件必须在您的主类中捕获。
要在主类中添加自定义事件侦听器,请写:
s.addEventListener("RemoveChild", removeChild)
添加处理函数
function removeChild(e:Event)
{
removeChild(s);
}
在您的圈子类中,您可以在想要触发时添加事件:
this.dispatchEvent(new Event("RemoveChild");
或者你可以通过在那里放置循环来控制主类的Alpha值并调用removeChild(s);直接
让自定义事件有效的一种简单方法是使用AS3Signals框架。
希望有所帮助