您的位置: 首页 > 技术文档 > 多媒体制作 > ShareObject 实现Replay功能
flash与ASP通信的几种方法 回到列表 ShareObject 实现flash数据存储
 ShareObject 实现Replay功能

作者:jinni 时间: 2003-08-07 文档类型:原创 来自:

有了ShareObject 这个利器,我们可以实现比存档更为强大的功能--录像回放
(当然,是指能够保存下来的录像,ShareObject 本身只是用来存储数据的,录像的实现本身与ShareObject 无关)为此我做了一个简单的例子:


说明:
用户可以随意托动小球,点击record开始录像(状态栏显示为“录制”),此期间用户仍可随意托动小球,请记住自己托动过的路线,要结束录像请再点击record,(录像时间为60秒)超时自动结束录制。点击replay观看刚才的录像(在录制状态直接点击replay也可)再次点击replay结束重播。

一下是全部代码:
frame 1:
var isRecording=0;
var isReplaying=0;
var i=0;
var j=0;
var condition="无";

myLSO=SharedObject.getLocal("record_1");

if(myLSO.data.statu == undefined)
{
statu=new Array();
myLSO.data.statu=statu;
}

player.onPress=function()
{
 if(!isReplaying)
 this.startDrag(true);
 }
player.onRelease=function()
{
 if(!isReplaying) 
 stopDrag();
 }
 
function Record()
{
 isRecording=!isRecording;
 isReplaying=0;
 if(i!=0)
  for(;i<=1200;i++)
   {
  myLSO.data.statu[i]=undefined;
     myLSO.data.statu[i+1]=undefined;
    }
    i=0;
 if(!isRecording)
  condition="无";
 //trace(isRecording);
 }
function Replay()
{
 isReplaying=!isReplaying;
 isRecording=0;
 j=0;
 if(i!=0)
 for(;i<=1200;i++)
   {
    myLSO.data.statu[i]=undefined;
     myLSO.data.statu[i+1]=undefined;
    }
    i=0;
 //trace(isReplaying);
 }
 
_root.onEnterFrame=function()

  if(isRecording)
   {   condition="录制";
    myLSO.data.statu[i]=player._x;
    myLSO.data.statu[i+1]=player._y;
    i+=2;
    if(i>=1200)
     {i=0;  isRecording=0; condition="无"}
    }
  if(isReplaying)
   {   condition="重放";
    if(myLSO.data.statu[j]!=undefined)
  {  player._x=myLSO.data.statu[j];
     player._y=myLSO.data.statu[j+1];
     j+=2;
     if(j>=1200)
      {j=0;  isReplaying=0; condition="无";}
    }
   else{j=0;  isReplaying=0; condition="无";}
  }
 }

值得注意的是,上面这种储存录像的方法只适用于简单录像的存储,因为它实际上是用一种储存每时刻状态的方式,对上面的例子而言,小球的状态只有它的坐标,因此可以轻松的实现。

但是,对于比较复杂的动画,例如一个射击游戏,采取这样的方式是不现实的因为状态量十分之多,比如,我方战机的HP,得分,位置,敌方战机的位置甚至是双方发出的每一颗子弹的位置,都是状态量,记录如此之多的状态是极其复杂的也会占据大量的空间。因此,我想可以改以一种存储每时刻操作的方式,即:记录每一时刻用户对player的操作,例如鼠标点击,方向键的按下等等,这样,在回放的时候,将数组中弹出的操作指令作用于player之上。相当于是让计算机替用户操作,这种基于原游戏机制的方法可以节省大量的空间。例如,某一时刻用户的操作为“按下up键”和“按下空格键(开火)”,只要让player在重放过程中得到这两个指令,就可以向玩家手动控制一样,做出相应的前进和射击的反应。但是,这种方法有一个局限性,就是必须从头开始录制,因为每一个状态都是从前一状态中递推出来的。我现在只有这样一个想法,还没有来得及实现,希望大家能对此发表自己的看法。

出处:
责任编辑:蓝色

◎进入论坛Flash专栏版块参加讨论

相关文章 更多相关链接
Flash 酷站猎手
中文ID3乱码问题MX解决方案
用AS2解决中文ID3的乱码
Flash常用效果-移动模糊效果
Flash MX 2005 制作环境预览
作者文章 更多作者文章
Flash Lite 与 J2ME 分析比较
给ActionScript初学者的建议
Flash MX 2004 支持的HTML标签
为AS2.0添砖加瓦-编写类扩展
MX2004--AS2.0 新特性实例教程
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2