Flash 重置主类
有没有一种简单的方法可以将所有变量重置为我第一次加载包时的状态,这样我就不必检查所有变量并手动重置它们Flash 重置主类,flash,actionscript-3,actionscript,Flash,Actionscript 3,Actionscript,有没有一种简单的方法可以将所有变量重置为我第一次加载包时的状态,这样我就不必检查所有变量并手动重置它们 谢谢。简短的答案是否定的。但是,一种解决方案可能是将类变量指定给在函数中声明的新变量。这将保留初始值并使其可用于其他函数。只有当类被重新实例化时,才会发生真正的“重置”。您可以在初始化类时保存变量,然后重新加载它们,这实际上就是重置。试试这个: package { public class Main extends Sprite { privat
谢谢。简短的答案是否定的。但是,一种解决方案可能是将类变量指定给在函数中声明的新变量。这将保留初始值并使其可用于其他函数。只有当类被重新实例化时,才会发生真正的“重置”。您可以在初始化类时保存变量,然后重新加载它们,这实际上就是重置。试试这个:
package
{
public class Main extends Sprite {
private var a=0;
private var b=0;
private var c=2;
public function Main(){
a=9;
b=4;
c=8;
}
}
}
这显然具有在整个应用程序运行时随时保存变量的优势。晚了吗
为什么不创建一个由“Import”和“AddChild”语法加载的新类,将删除并再次加载的变量放入其中?我觉得这就是答案,我不认为有办法重新安装Main()类,对吗?假设主函数没有立即重新分配变量,也就是说,我不这么认为。但是,您可以将这些值嵌入到单独的类中,并在每次需要重置它们时从Main中重新实例化该类。这会产生一些额外的开销,但可能会实现您所需要的+1对于@Marty Wallace建议的方法,这将保留您的值,而不会产生新类的开销。您的建议非常有价值,应该通过提供至少一些伪代码来澄清您的意思。现在这个答案对任何人都没有帮助。
package
{
import flash.display.Sprite;
public class Main extends Sprite
{
private var _saved:Array = [];
public var awesome:Boolean = true;
public var val:String = "hello";
public function Main()
{
saveVars("awesome","val","alpha");
awesome = false;
alpha = 0.5;
val = "there";
loadVars();
trace(alpha); // 1
trace(val) ;// hello
trace(awesome); // true
}
/**
* Saves defined vars
* @param ...args A list of variables to save
*/
public function saveVars(...args):void
{
_saved = [];
var i:String;
for each(i in args)
{
_saved[i] = this[i];
}
}
/**
* Loads from last save
*/
public function loadVars():void
{
var i:String;
for(i in _saved)
{
this[i] = _saved[i];
}
}
}
}