我一直在制作一个降临节日历,当你按下按钮时,门就会打开。我创建了一个变量来控制你可以在哪个日期打开它们,如果日期合适的话,这个变量叫做"AllowOpen"。我还创建了一个函数,当点击时转到一个框架。
var AllowOpen: Boolean = false;
if (Day == 1) {
AllowOpen = true;
} else {
AllowOpen = false;
}
button1.addEventListener(MouseEvent.MOUSE_DOWN, click);
function click(event:MouseEvent):void
{
gotoAndStop(2)
}
我不知道如何告诉程序只有在允许打开的情况下才能打开门。我尝试过"如果"语句,但它似乎不起作用。感谢
好吧,你可以把"if"循环放在函数内部,就像上面已经建议的那样:
function click(e:Event):void{
if (AllowOpen) {
gotoAndStop(2);
}
}
但是,小蜘蛛感觉到刺痛。我会选择添加一个ENTER_FRAME侦听器,这样当一天发生变化时,你就会自动更改每天/打开的门的布尔值:
var my_boolean_var_i:boolean = false;
addEventListener(Event.ENTER_FRAME, checkDay);
function checkDay(e:Event):void{
if(Day == day_i){
my_boolean_var_i = true;
}
}
"i"将是另一个变量,您可以声明它存储一个从1到28的整数,具体取决于日期,然后是一组变量"day+i"。然后,你可以为每个门设置一个监听器/函数,用i顺序命名,以保持一切有序:
door_i.addEventListener(Event.MOUSE_CLICK, click_i);
function click_i(e:Event):void{
if(my_boolean_var_i == true){
gotoAndStop(2);
}
}
这就是我完成任务的方式。这是很多重复的代码,所以从更高级的用户那里肯定会有一些更优雅的方法来做到这一点。此外,如果要设置门的动画,请查找GreenSock TweenSite。非常有用和友好的图形等等。