我一直在尝试使用ActionScript 3.0在Flash中创建这个小游戏。我正在使用SharedObject类,我想要做的是查看是否可以将数据类型(so.data.x)默认为null或默认为0,因为默认情况下它并不是真的。当我尝试增加其中一种数据类型时,它会给我NaN,或者当我尝试比较它时,我在" onClickSubmit"中得到了一个逻辑错误。功能。我无法在程序开头分配任何内容,因为它的关键是在关闭游戏并重新打开它之后保存它。提前谢谢。
import flash.net.SharedObject;
import flash.events.MouseEvent;
import flash.text.TextField;
var so:SharedObject = SharedObject.getLocal("app");
target.addEventListener(MouseEvent.CLICK, onClickTarget);
submit.addEventListener(MouseEvent.CLICK, onClickSubmit);
function onClickTarget(e:MouseEvent):void
{
so.data.currentHighscore++;
trace("Clicked! " + "(" + so.data.currentHighscore + ")");
}
function onClickSubmit(e:MouseEvent):void
{
if (so.data.currentScore > so.data.highscore)
{
trace("You beat the highscore!");
so.data.currentHighscore = 0;
}
else
trace("You haven't beat the highscore yet... keep trying");
}
答案 0 :(得分:2)
你应该这样做:
import flash.net.SharedObject;
import flash.events.MouseEvent;
import flash.text.TextField;
var so:SharedObject = SharedObject.getLocal("app");
target.addEventListener(MouseEvent.CLICK, onClickTarget);
submit.addEventListener(MouseEvent.CLICK, onClickSubmit);
var score:int = 0;
if (so.data.highscore == undefined) so.data.highscore = 0;
function onClickTarget(e:MouseEvent):void
{
score++;
trace("Clicked! (" + score + ")");
}
function onClickSubmit(e:MouseEvent):void
{
if (score > so.data.highscore)
{
trace("You beat the highscore!");
so.data.highscore = score;
so.flush();
}
else
trace("You haven't beat the highscore yet... keep trying");
}
<强>备注强>
您应该使用PHP和MySQL,因为.so文件可以在用户不知情的情况下删除。有关详细信息,请参阅:Adobe help about SharedOject&gt;本地磁盘空间注意事项。
答案 1 :(得分:0)
你的描述非常矛盾。你想要使用不存在的东西。您应首先创建共享对象并将其刷新,然后才能使用它。您可以在应用程序中放入一些逻辑来检查共享对象是否存在,如果不存在,则使用您想要的默认值创建它。它基本上是你想要的 - 一些具有默认值的对象。此外,您不应该直接在SO中使用您的属性,至少因为您正在失去强类型。您应该在应用程序中创建一些支持的属性并使用它们。然后,在某些时候,您可以将这些属性刷新为SO。