我的Flash动作图层包含完整的源代码。 我的问题是:为什么动作层会以新的开始(新变量)执行多次?
以下代码段演示了我的意思:
var notyetexecuted:Boolean=true;
function addNetStream(counter) {
if (notyetexecuted = true) {
trace(notyetexecuted);
notyetexecuted=false;
}
}
这总是返回true,这意味着再次执行actions层。 来自java,这对我来说没有意义。
/ edit:我忘了提到我有一个间隔函数(仍然布尔值应该为false而addNetStream应该什么都不做)
function User():Void {
trace("Aktuelle Anzahl User: " + counter);
if (counter > prevcounter) {
addNetStream(counter);
counter++;
} else if (counter < prevcounter) {
}
}
myInterval = setInterval(this, "User", 3000);
可以解释为什么会出现这种情况以及Flash如何执行图层? 欢呼声。
答案 0 :(得分:1)
这是因为你在这条线上的测试:
if (notyetexecuted = true)
设置notyetexectuted为true它应该是:
if (notyetexecuted == true)
请注意double ==
答案 1 :(得分:1)
使用等号运算符。
if (notyetexecuted == true) {
// ...
}
答案 2 :(得分:0)
如果时间轴中有多个帧,Flash会读取并循环播放。每次返回包含操作的帧时,它们都会再次运行。
此外,您还可以体验双重火灾的额外事件。使用下面的代码(默认情况下在flashdevelop中)。
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
public function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
}
答案 3 :(得分:0)
很明显,你得到了你需要的答案。
但是,对于它的价值,这个测试:
if (notyetexecuted == true) {
// ...
}
...可以安全地简化为:
if (notyetexecuted) {
// ...
}
...因为notyetexecuted是一个布尔值,只能是 TRUE 或 FALSE 。
使用此样式可让您的代码更易于阅读,并避免“=” / “==”陷阱。
祝你好运!