范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Flash摄像头游戏课件的设计之动画制作论文

  摘要:
  摄像头游戏是随着技术的进步产生出来的一种新的游戏形式,它摆脱了鼠标与键盘的限制,给游戏者以全新的互动体验。Flash 8提供的位图处理功能为Flash摄像头游戏的实现提供了可能。将摄像头游戏技术引入到Flash课件的开发,可以充分发挥其互动性和趣味性,与传统Flash课件相比,具有其不可替代的优势。该文提出设计Flash摄像头游戏课件的基本原则,并以《水果乐园》课件为例,详细介绍了开发的过程和主要实现方法,为摄像头游戏类课件制作提供了参考。
  关键词:Flash;摄像头游戏;
  一、引言
  摄像头游戏是随着摄像头的普及和图形图像技术的不断发展而出现的。它摆脱了鼠标键盘的限制,给游戏者带来全新的游戏体验,能够实现许多传统游戏无法实现的游戏效果。它通过摄像头将玩家投影到游戏中,由玩家自己做动作与游戏进行交互。画面中登场的敌人或道具都将对玩家的动作即刻做出反应,让玩家体验到前所未有的新鲜感。
  Flash课件是用Flash的形式表现教学内容一种课件形式。Flash课件充分利用了Flash的直观性、互动性以及娱乐性,能够有效的调动学生的学习积极性,激发学生的学习乐趣,在当前的教学过程中发挥着越来越大的作用。Flash摄像头游戏课件整合了摄像头游戏和Flash课件的优点,充分体现了寓教于乐的教学思想。它带给学生全新的游戏感受,能够极大的激发学生的学习兴趣。它能够激发学生的多种感观刺激,建立强烈的真实感,通过游戏过程中学生与游戏的互动,还能够促进学生手、耳、眼以及肢体的相互协调,达到较好的教学效果。
  二、Flash摄像头游戏课件的设计原则
  Flash摄像头游戏课件具有较好参与性、体验性,能够有效增强学习效果,提高学习效率,特别适合于学生动作类技能的训练。在设计的过程中,应遵循如下原则,体现其独特的优势。
  (1)教学性原则
  这是所有课件,应用于教学的最基本的要求,该类课件也不例外,在设计的过程中,必须针对一定的教学目标,遵循认知过程的一般规律,组织教学内容和教学活动。紧密围绕以学生学习为中心的设计思路。
  (2)易用性原则
  摄像头游戏课件的交互,计算机对于学习者的动作回应,都是建立在动作检测,捕捉学习者动作影像的基础上。设计过程中应考虑让学习者的操作尽量简便,易于上手使用。做好课件使用的帮助或者使用手册。
  (3)科学性原则
  课件的内容,不能有科学性的错误,这也是设计中基本要求,必须对课件所有呈示的内容,进行严格仔细的审查,保证学生看到的所有知识点,都必须科学、准确,一般由课件开发小组中学科专家把好关。
  (4)艺术性原则
  如果一个课件的展示不但取得良好的教学效果,而日‘使人赏心悦目,使人获得美的享受,则说课件具有较高的艺术性。这样的课件是好的内容与美的形式的统一,美的形式能激发学生的兴趣,史好地表现内容。其表现有:展示的对象结构对称,色彩柔和,搭配合理,有审美性。
  (5)体验性原则
  摄像头游戏课件因其交互的多维化,全方位,检测学习者动作,使得学习者的沉浸感很强,要求学习者的个人形象和课件环境融合的过程中,能让学习能有身临其境的感觉,所以课件在设计的过程中,注意课件环境,界面的元素,声音的效果,都必然能激发学习者的投入感。该原则是摄像头游戏课件设计过程中最重要的原则,也是整个课件制作的关键,成败所在。
  三、Flash摄像头游戏课件的设计与实现
  在儿童英语教学中,引入Flash摄像头游戏课件,使得儿童摆脱键盘和鼠标的单一化的交互方式,而进行身体动作与计算机的交互,增强儿童学习的体验感,能较好的辅助英语的学习。以下是设计与开发的水果乐园课件的实现步骤和主要功能代码。
  1.摄像头图像的捕获
  使用Camera类实现对摄像头图像的捕获。Camera.get()方法返回对用于捕获视频的 Camera 对象的引用。当 SWF 文件尝试访问 Camera.get() 返回的摄像头时,Flash Player 显示拒绝对话框,用户可从中选择是允许还是拒绝对摄像头的访问。setMode()方法将摄像头的捕获模式设置为最符合指定要求的本机模式。//新建一个Camera对象,实例名为my_cam,并设置对象属性。var my_cam:Camera = Camera.get();my_cam.setMode(160,120,30,true);
  2.摄像头图像的显示
  1)显示图像
  若要实际开始捕获视频,必须将 Camera 对象附加到 Video 对象。attachVideo(source:Object) : Void指定将在舞台上的 Video 对象的边界内显示的视频流 (source)。//新建一个Video对象,将Camera对象附加到Video上。var my_video:Video;my_video.attachVideo(my_cam);
  2)水平翻转图像
  由于摄像头中看到的图像与游戏者本人的方向相反。为了方便游戏者操作游戏,在加载图像时应该把图像左右翻转。这一操作非常重要,将直接影响游戏者的游戏体验。
  Video._rotation 属性可以实现对Video图像的旋转,但是无法实现左右翻转的效果。
  Video._xscale 属性指示从 Video 对象注册点开始应用的 Video 对象的水平缩放比例 。当x轴的水平缩放比例为-100时,则可以实现对Video对象的水平翻转。默认注册点为 (0,0)。缩放本地坐标系统将影响 _x 和 _y 属性设置,这些设置是以整像素定义的。由于翻转时是以左上角主测点为中心,因此在水平翻转之后,Video对象的坐标虽然未发生改变,但是整体位置向左平移了Video. _width个像素。因此翻转之后我们需要设置Video的新坐标为Video._x = Video._x+Video._width。
  3.获取图像信息
  要对获取的图像进行分析,必须将从摄像头获取的图像信息提取出来。在Flash8中, Bitmap对象存储了图像中各点的RGB通道信息以及Alpha通道信息,可以使用new方法建立一个Bitmap对象。然后使用draw()方法提取某一时刻video对象中的像素信息。
  draw(source:Object,[matrix:Matrix],[colorTransform.:ColorTransform], [blendMode:Object], [clipRect:Rectangle], [smooth:Boolean]) : Void使用 Flash Player 矢量呈现器在目标图像上绘制源图像。使用 Matrix、ColorTransform、BlendMode 对象以及目标 Rectangle 对象来控制呈现的执行方式。或者也可以指定缩放时是否应对位图进行平滑处理。这只适用于当源对象是 BitmapData 对象时的情况。
  import Flash.display.BitmapData;
  //创建BitmapData对象Var snapshot:BitmapData=newBitmapData(output_vid._width,output_vid._height);
  //从my_video获取当前图像now.draw(my_video);
  4.运动检测的实现
  该部分是整个摄像头游戏实现的核心。主要利用了Flash 8的位图处理功能,即BitmapData类。
  1)基本思路
  我们可以使用getPixel(x,y)获取前一张图片上每个像素点的像素值,然后对比后一张图片中的每一点的像素值,当像素的亮度差值变化达到一定程度时,认为该点发生了运动变化。通过这种方式,得到前后两张图片的负片效果图。
  //阀值tolerance=10;
  //获取当前图像now某一点的RGB值nc=now.getPixel(x,y);
  //红色通道nr=nc16&0xff;
  //绿色通道ng=nc8&0xff;
  //蓝色通道nb=nc&0xff;
  //计算该点亮度值nl=Math.sqrt(nr*nr + ng*ng + nb*nb)
  //获取前一快照before同一点的RGB值bc=before.getPixel(x,y);
  //红色通道br=bc16&0xff;
  //绿色通道bg=bc8&0xff;
  //蓝色通道bb=bc&0xff;
  //计算该点亮度值bl=Math.sqrt(br*br + bg*bg + bb*bb);
  //计算亮度值的变化d=Math.round(Math.abs(bl-nl));
  if(dtolerance){//该点发生了变化 }
  但是这种方法存在计算效率问题。按图像大小为180*160像素,每秒30帧计算,每计算一副图片需要的计算次数为180*160*30。图像的像素越大,需要的计算次数就越多。采用隔点检测的方法可以在一定程度上缓解计算压力,即每隔n个像素检测一次,这样电脑的计算次数减少为原来的1/n。
  2)改进思路
  Flash8提供的图像混合模式可以解决上面遇到的效率问题。Flash8提供了11种图像混合模式。每一种混合模式可以得到不同的混合效果。Different 混合模式是基于两张图片之间的亮度差值进行计算,从而得到图片的负片效果。利用该模式,便可以得到移动像素的检测图像。
  //将前一张快照before的图像绘制到当前快照now上,使用different混合模式now.draw(before, new Matrix(), null, "difference");
  图像中黑色表示没有发生移动,其他颜色表示发生了移动。由于Flash8提供的混合模式是采用C++编码实现的,因此运行效率要比Action Script编码更加高效。
  5.动态显示检测图像
  1)处理检测图像
  通过以上两种方式得到的图像中色彩范围较广,这增加了统计上面的困难。通过使用 threshold() 方法,可以隔离和替换图像中的颜色范围,并对图像像素执行其它逻辑操作。threshold()函数根据指定的阈值测试图像中的像素值,并将通过测试的像素设置为新的颜色值。这样,便得到了清晰醒目的.检测图像。
  //将大于阀值0xFF111111的像素替换为绿色。
  myBitmap.threshold(myBitmap, myBitmap.rectangle, myBitmap.rectangle.topLeft, "", 0xFF111111, 0xFF00FF00, 0x00FFFFFF, false);
  2)检测图像的显示
  Bitmap对象无法直接在舞台上显示,必须附着在MovieClip上面才能显示。因此可以使用MovieClip类的attachBitmap()方法,将获取的图像信息显示出来。
  //创建一个影片剪辑来显示当前图像this.createEmptyMovieClip(当前,this.getNextHighest Depth());
  //将摄像头获取的图像显示在影片剪辑内bitmap_mc.attachBitmap(now,1);
  3)检测图像的动态显示
  要实现检测图像的动态显示,必须不断的更新当前图像now和历史图像before,并进行混合处理。可以把检测图像的功能写成方法snapshot(),每隔100毫秒调用一次。
  伪代码如下:
  function snapshot() {//获取当前图像//获取检测图像//将检测图像绘制到//将检测图像中RGB超过阀值0xFF111111的部分替换成绿色//显示检测图像//本次检测完成之后,当前图像便成为了历史图像。为下一次检测做好准备。preBitmap = nowBitmap.clone();}
  在该方法中,关键在于每次检测完成之后当前图像和历史图像的更新。
  6.检测特定区域内的运动状态
  经过上面几步操作,已经得到了检测图像。检测图像是对整幅图像的运动情况的反映。在游戏中,经常需要检测的是某一特定区域的运动状态。
  1)检测某点的运动状态
  因为已经到了检测图像,所以在检测某一点运动状态时,只需要判断检测图像上该点的RGB值是否大于阀值。
  伪代码如下:
  pix = myBitmap.getPixel(x, y);if (pix大于阀值) {//该点发生了运动}
  2)检测某区域的运动状态
  由于灯光因素、摄像头图像噪点等干扰因素的存在,每次只检测一个点容易造成检测结果的不稳定。因此,大多采用区域检测的方式。即在检测某点运动状态时,检测的不仅仅是这个点,而是以该点开始的n*n个像素的区域(n的取值根据实际情况确定,在检测点数量较多时,n的值不宜取太大。)。如果检测区域内的像素点变化数量超过一定阀值,如60%,则认为该区域发生了运动。
  需要注意的一点是,由于看到的图像是经过水平翻转的,但原有的图像内部坐标系并没有发生变化,因此,检测时的取点位置也要水平翻转。
  //以(rectx,recty)为顶点的rectw*recth的矩形区域的运动情况
  function ismove(a, rectx, recty, rectw, recth) {var i, j;
  var sum = 0;
    var pix;
  for (i=1; i=rectw; i++) {for (j=1; j=recth; j++) {//图像水平翻转后取点位置相对变化pix = a.getPixel(160-i-rectx, j+recty);
  if (pix132361) {sum++;
  //trace("sum="+sum);
  if (sum(recth*rectw/2)) {return (sum);
  //该区域发生了运动} else {return 0;}}
  在该方法中,检测图像、检测区域顶点坐标、检测区域大小都为作为变量输入。采用这种方法,提高了程序的重用性,还可以实现对运动物体的检测。
  3)检测点的设置
  所谓检测点,实际是一个影片剪辑。在进行区域检测时,以该影片剪辑的坐标(x,y)确定检测区域的坐标位置。检测点可以是一个不可见的辅助点,也可以是舞台中运动的物体。当把运动物体做为检测点时,随着物体的移动,检测区域也随之移动,因此可以实现对运动物体的检测。检测点的作用:一是可以起到辅助点的作用,简化了检测区域定位的繁琐工作,使定位操作可视化。二是实现了代码的重用,起到了简化程序的作用。
  7.实现摄像头运动检测的控制接口
  游戏中检测点接口的作用就是返回舞台中被触碰的检测点编号。在接口函数中,调用了以上几个功能函数。返回值为检测点编号。
  function istouch() {var max:Number = 0;
  var min:Number;
  var num:Number;
  for (var i = 1; i=9; i++) {//检测第i个检测点是否被触碰min = ismove(myBitmap, this["point"+i]._x-xpoint, this["point"+i]._y-ypoint, 10, 10);
  //每次只能激发一个点,选择9个点中移动最显著的一个if (max max = min;num = i;}}
   if (num) {//返回被触碰的点的序号return (num);} else {//一个检测点也没碰到!;return 0;}}
  8.游戏交互功能的实现
  游戏功能交互的实现tulaoshi.com方法和其他Flash游戏大体类似。在此游戏中,主要包括3大功能模块:子弹系统,气球系统 和主控制系统。
  1)子弹系统的实现
  该部分主要是实现子弹的运动。游戏中有9个检测点,每个检测点都可以发射子弹。各位置发射的子弹运动方向是不同的。第i个检测点的子弹方向为rot=i*20,初始位置在界面底部中央。
  this._x = this._x-30*Math.cos(rot*Math.PI/180);
  this._y = this._y-30*Math.sin(rot*Math.PI/180);
  当子弹出界时,要使用this.unloadMovie()方法将该子弹实例销毁,释放内存。
  2)气球系统的实现
  该部分主要是实现气球的碰撞检测,判断气球是否被子弹击中需使用hitTest()函数。该函数有两种用法:
  用法 1:
  根据 shapeFlag 设置,将 x 和 y 坐标与指定实例的形状或边框进行比较。如果 shapeFlag 设置为 true,则只计算在舞台上的实例实际占据的区域,并且如果 x 和 y 在任意一点重叠,则返回 true 值。
  用法 2:
  计算 target 和指定实例的边框,如果它们在任意一点上重叠或交叉,则返回 true。
  3)主控制系统的实现
  主控制系统是实现互动功能的核心部分。主要工作就是把游戏中所有的功能模块集成起来,对各功能模块进行调度和显示。一方面,主控制系统要接收从摄像头功能接口传递的信息;一方面根据接收的信息执行相应的功能代码。
  四、结束语
  Flash摄像头游戏课件能够实现很多传统Flash课件难以实现的效果,特别是对操作技能的培养。我们开发的《水果乐园》课件提供给一些小学,进行了英语学习实践,效果还不错。但是,对于Flash摄像头游戏课件应用于学生高级思维策略的训练,还没有进行深入的研究,特别是角色扮演型、问题探究型等学习模式等实施,有待进一步的的探索和实践。

水利施工管理的重要意义论文一水利工程施工建设中存在的问题水利工程施工建设存在以下几个问题1)缺乏基本的水利工程的施工管理意识。不少施工建设单位缺乏基本的水利工程建设的施工管理意识,在其建设施工中只顾埋头苦干农村学校管理论文农村学校的管理体系相对没有那么的完整,那么大家对于农村学校管理有什么样的看法呢?下面就随小编一起去阅读农村学校管理论文,相信能带给大家启发。摘要校长是学校管理者队伍中的重要角色。要哲学家思想的论文对于哲学家思想,大家的了解有多少呢?下面哲学家思想的论文是小编为大家整理的,在这里跟大家分享一下。随着社会经济的发展,国与国之间文化的交融,孔子思想也有了新的发展与更新,下面是小编电视节目制作中DVD技术应用的研究的特点论文DVD作为21世纪电影电视消费领域的新宠,它提供了比录像带VCD及LD等传统媒体更为优良的画质及音质。PAL制的DVD提供的影像分辨率为720576和D1DV格式的PAL制的电视信职业教育项目课程探究论文一概述近年来,在我国社会经济的不断发展之下,职业教育项目课程已慢慢演变为一种新型的课程教育模式,它主要以工作任务为职业活动的核心内容,以职业活动的过程作为教学组织的重要线索,与社会楼宇系统电气消防技术研究论文摘要现如今,随着时代经济的飞速发展以及科学技术的日新月异,当前建筑建设进程逐渐加快,同时对于如何做好建筑楼宇的防火设置始终是建筑行业关注的焦点之一。文章研究分析楼宇系统电气消防技术2018毕业论文格式要求导语毕业论文即需要在学业完成前写作并提交的论文,是教学或科研活动的重要组成部分之一。下面由小编为大家整理的2018毕业论文格式要求,希望可以帮助到大家!1封面(1)封面有江西工业贸新时期构建成人高等教育教学质量监控体系的策略研究论文摘要成人高等教育是我国高等教育体系的重要组成部分,伴随着高等教育大众化的进程,越来越多的人通过成人高等教育来接受高等教育。而成人高等教育所担负的社会功能能否充分发挥,根本上取决于其会计社会实践论文导语关于会计社会实践论文,这不仅是一次实践,还是一次人生经历,是一生宝贵的财富。在今后我要参加更多的社会实践,磨练自己的同时让自己认识到更多,为将来踏入社会打下坚实基础。下面由小编工艺安全管理发展论文摘要工艺安全管理是通过对化工工艺危害和风险的识别分析评价和处理,从而避免与化工工艺相关的伤害和事故的管理流程。本文介绍了工艺安全管理的发展过程,了解国内外工艺安全体系的完善历程,对商务礼仪教学应用思考的重要性分析研究论文第1篇浅谈高职商务礼仪教学随着社会对人才类型需求的变化,高智商高学历的知识型人才已经不再是社会的重点需求对象,在知识教学的基础上提高学生软技巧已经成为当前教学改革的重点内容。为了提
新课改语文课堂教学质量论文范文一研读文本,把握主题对于文章主题的理解和把握也并不是那么简单,有的课文比较明显,一眼就能看出其要表达的思想情感,而有的课文思想感情的表现很隐晦,需要根据文章的时代背景作者当时的情感浅议市场经济下的企业人力资源管理企业人力资源管理对于一个企业来说的长远发展来说至关重要。随着市场经济的快速发展,企业的人力资源部门在管理方面面临着巨大的挑战,如何用有效而又富有创新性的手段留住员工并继而推动企业的对现代管理中工具理性的反思分析论文一问题的提出对于工具理性至今为比学术界并没有给出一个明确统一的定义,但基本的共识就是它是理性的一种特殊表现形式,以可计算性可预测性可重复性和可置换性为基本要求的技术逻辑,以效率优先大数据时代基于云计算的数据监护研究论文在大数据时代,为了更好地管理和利用科学数据,计算机图灵奖获得者JimGray于2002年提出了数据监护(DataCuration)的概念。十余年来,数据监护一直是国内外信息资源管理建设工程项目管理信息化发展问题探析论文1。建设工程项目管理信息化发展问题探析1。1信息化建设体系不完善实现建筑工程业主方信息化建设的首要因素是构建完善的信息化建设体系,从制度和方法上保证相应执行环节中的方向和方法符合实初中数学素质教育思考论文一初中数学教学中素质教育的方法(一)重视初中生学习数学知识的过程,加强学生对数学科目建模能力的培养有人将数学比喻成认识世界的一种不可或缺的语言,成年人必须具备的素质之一是能否把数学初三重要数学考题的解题方法解析论文近年来,随着新课程改革的不断深入,初中数学重要考题更具有综合性与全面性,注重对初中学生的全面考查。初三是初中学生升学考试前的重要时期,应加强对数学知识的综合知识的应用能力,可以说,我国与上合组织成员国贸易现状论文范文上海合作组织由上海五国机制发展而来,正式成立于2001年。详细内容请看下文我国与上合组织成员国贸易现状。应该说SCO是在中国的倡议和主导下,得到俄罗斯和中亚国家的积极响应成立并发展小学数学教学中对话教育的实用性论文一对话教学在小学数学教学中的应用1。学生与学生的对话在实施对话教学中,生生对话更能促进学生思维的发展。在没有教师参与的对话活动中,学生不再畏惧教师的权威而拘谨,在宽松的氛围中有了自学前教育专科论文范文导语春蚕到死丝方尽,人至期颐亦不休。一息尚存须努力,留作青年好范畴。以下小编为大家介绍学前教育专科论文范文文章,欢迎大家阅读参考!学前教育专科论文范文摘要在学前教育专业教育中,必须数学技能的形成过程论文1数学操作技能的形成过程。数学操作技能作为一种外显的操作活动方式,它的形成大致要经过以下四个基本阶段。(1)动作的定向阶段。这是操作技能形成的起始阶段,主要是学习者在头脑里建立起完