public class Main extends MovieClip {
public function Main():void {
getOne()
}
function getOne():void {
var varOne:Boolean = false;
stage.addEventListener(MouseEvent.CLICK, dunClicked);
}
function dunClicked(e:Event):void {
if(!varOne) trace("Nope...");
}
}
现在......我知道如果我把varOne放在Class中它会被视为一种'全局变量'(如果我错了请纠正我......)我想知道是否还有另一种方法EventListener查看varOne的值?
答案 0 :(得分:1)
将'varOne'声明为Main类的成员是最好的办法。创建一个闭包(内部函数)肯定也有用,但不是一个很好的练习,因为你不能删除使用这样一个匿名函数定义的事件监听器。
这不是“全局”,而是这个类实例的属性,你应该通过写'this.varOne'(和'this.getOne()','this.dunClicked'来技术上访问它的属性... )但在AS3 / Java /等。你可以写'varOne'。
public class Main extends MovieClip {
private var varOne:Boolean; // defaults to false;
public function Main():void {
getOne()
}
function getOne():void {
stage.addEventListener(MouseEvent.CLICK, dunClicked);
}
function dunClicked(e:Event):void {
if (!varOne) trace("Nope...");
// if (!this.varOne) trace("Nope..."); // this is equivalent
}
}
答案 1 :(得分:0)
您可以将侦听器放在函数中,这样它就会成为一个闭包,并且可以访问本地函数变量。
function getOne():void {
var varOne:Boolean = false;
stage.addEventListener(MouseEvent.CLICK, dunClicked);
function dunClicked(e:Event):void {
if(!varOne) trace("Nope...");
}
}