好的,这让我疯了。我的AS3知识并不是世界上最好的,但我试图解决所有这些问题。
基本上,我尝试做的是在某些时候,制作可见/不可见的两个不同的MovieClip。
奇怪的是,一个人正在回应。而另一个则不是。除了jpeg内容和名称之外,它们都是相同的。我缺少一个设置吗?两者都匹配MovieClip名称和实例名称...但是当我使用下面的代码时,HOP1关闭/打开,但HOP2拒绝!我只是错过了一些愚蠢的偏好吗?
我会提到,我必须修改代码才能使用两个不同的MovieClip,但是现在我只想让两个文件都关闭!
package {
import flash.display.MovieClip;
import flash.events.TimerEvent;
import flash.ui.Mouse;
import flash.utils.Timer;
import com.boo.CustomDate;
import com.boo.ScreensaverSimple;
public class Generic extends MovieClip {
// This is where you can set the Hour of Power time start and end time (in 24 hour format e.g. 1330 for 1:30pm)
// If there is no hour of power, simply set both numbers to 0
private var HourOfPowerStartTime:Number = 0;
private var HourOfPowerEndTime:Number = 0;
private var ss:ScreensaverSimple;
public var time_check_timer:Timer;
private var delay_add_timer:Timer;
public function Generic() {
Mouse.hide();
ss = new ScreensaverSimple;
ss.setScreensaver(screens);
HOP2.visible = false;
time_check_timer = new Timer(1000);
time_check_timer.addEventListener(TimerEvent.TIMER, checkTime);
delay_add_timer = new Timer(1,1);
delay_add_timer.addEventListener(TimerEvent.TIMER, addAllChildren);
delay_add_timer.start();
}
public function addAllChildren(evt:TimerEvent=null):void {
delay_add_timer.removeEventListener(TimerEvent.TIMER, addAllChildren);
delay_add_timer.stop();
delay_add_timer = null;
time_check_timer.start();
checkTime();
}
public function checkTime(evt:TimerEvent=null):void {
checkHOP2();
}
private function checkHOP1():void {
if(HourOfPowerStartTime == 0 && HourOfPowerEndTime == 0)
{
if(HOP2.visible == true)
{
HOP2.visible = false;
}
return;
}
var CurrentTime:Number = CustomDate.return24HourNumber();
if(CurrentTime >= HourOfPowerStartTime && CurrentTime <= HourOfPowerEndTime)
{
if(HOP2.visible == false)
{
HOP2.visible = true;
}
}
else
{
if(HOP2.visible == true)
{
HOP2.visible = false;
}
}
}
}
}
答案 0 :(得分:1)
if(HOP2.visible == true)
{
HOP2.visible = false;
}
这里的if
条件完全冗余。如果你考虑一下,这些线的工作方式与单独使用的完全相同:
HOP2.visible = false;
同样(HOP2.visible == true)
与(HOP2.visible)
完全相同,您也可以将条件检查的值直接指定给变量。通常,您可以将功能降低到:
private function checkHOP1():void {
HOP2.visible = (HourOfPowerStartTime || HourOfPowerEndTime);
if (!HOP2.visible) return;
var CurrentTime:Number = CustomDate.return24HourNumber();
HOP2.visible = (CurrentTime >= HourOfPowerStartTime && CurrentTime <= HourOfPowerEndTime);
}
然后我看到你打电话给checkHOP2()
:
public function checkTime(evt:TimerEvent=null):void {
checkHOP2();
}
但我没有看到您提供的代码中定义的checkHOP2()
函数。
同样地,我没有看到您调用已发布的checkHOP1()
功能的表单。而且我也不明白为什么在名为HOP2
的函数中更改checkHOP1()
实例。它是否被认为是某种混淆?