FLASH 的一个AS问题。急!

来源:百度知道 编辑:UC知道 时间:2024/05/13 06:33:54
我在帧上写了一个
var Time = 1000;
setInterval(HP,_root.Time);
function HP(){
MC._x += 1;
}
然后做了一个按钮,和一个空的MC。
按钮的AS意思是——点一下变量Time增加1000。
空的MC的AS意思是——trace随时不断的向输出面板显示出变量Tine和MC._x的值
面板的显示是正常的,只是我发现按钮按下了以后,输出面板显示Tine是2000或更大了,所以function应该是每2秒或更久执行一次,可是依然是每秒执行一次!请问怎么解决啊?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!一楼说的很对,Time的值是被改变了,但是因为setInterval是写在帧上(动画就只有一帧)的setInterval在进入帧的时候就已经读取了Time的值!所以后面就算是变量Time的值改变了,setInterval也不会再去读取time的值!我也试将setInterval写在onClipEvent (enterFrame)内,但是因为这个受到帧速的影响,所以会造成错误。我用的每秒50帧!所以一秒钟会执行 onClipEvent (enterFrame)内的语句50次,这样function内的MC._x就会变为MC._x += 1*帧速*播放动画的时间。
就是这样我才犯难,求教大家的!

//全在桢上写,btn是按钮的名字,明白了吗,要先清除原先的setInterval,再设置
var Time = 1000;
setTime = setInterval(HP, Time);
function HP() {
MC._x += 1;

trace(Time);
trace(MC._x);
}
_root.btn.onPress = function() {
Time = Time + 1000;
clearInterval(setTime);
setTime = setInterval(HP, Time);
};

你描述的我没太看懂,但是我推测,是因为你并没有真正改变你的HP函数的激发时间间隔
1.可能是你没能真正的改变Time
2.你虽然改变了Time但是每次运行到var Time = 1000;这个语句的时候,Time都被重新赋值了,也就是还是1000

其实这两种可能性差不多,问题的核心是你改变Time并传递时出了差错,检查下代码