首先,关于使用 SharedObjects 存储任何重要信息的说明——在您的情况下,存储测验是否已完成以防止重考:这不是万无一失的。任何用户都可以删除或更改他们的共享对象,而您不再拥有该数据。
至于跟踪他们的答案并通过电子邮件发送给他们,这是完全可行的。将它们存储在共享对象中是不必要的,除非您打算让用户在多个会话过程中进行测验(部分完成测验,稍后再返回)。在单个“会话”期间存储在共享对象中的任何内容都可以在应用程序运行时轻松存储在内存中。
最后,您提到您正在使用场景。大多数开发人员会建议不要这样做。这是开发 Flash 应用程序的过时模式。如果您现在正处于开发过程中的某个阶段,您可以将它们去掉,我强烈建议您这样做。
除了注意事项,您可以这样做:
// in your first Scene (here, labeled "Scene 1"), grab a reference to a SharedObject, I named mine "quiz"
var so:SharedObject = SharedObject.getLocal("quiz");
// set up any necessary data structure for the data you plan to store
if(!so.data.results){
so.data.results = {};
}
// you can check to see if data has already been written to the shared object, if so, you can use this to determine the flow of the quiz
if(so.data.results.scene1Results){
trace("scene 1 already completed: ",so.data.results.scene1Results);
}
else{
so.data.results.scene1Results = "some value";
so.flush();
trace("scene 1 data stored");
}
在您的其他场景中,您可以像以前一样获取对共享对象的引用:SharedObject.getLocal("quiz");
并在测验进行时向其中添加数据。
至于邮寄结果,您有两种选择:
- (建议)构建一个服务器端脚本,通过 POST 请求接收信息并将其通过电子邮件发送到您选择的地址。
- (不推荐)生成一个包含测验结果作为电子邮件正文的 mailto url。这样做的问题是它允许用户在将结果发送给预期的收件人之前在他们自己的邮件客户端中编辑结果。