如何使用sharedObject增加分数?

时间:2014-08-25 05:58:06

标签: actionscript-3

我一直在尝试使用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");
}

2 个答案:

答案 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。