|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Flash可以包含简单的动画、视频内容、复杂演示文稿和应用程序以及介于它们之间的任何内容。
poluoluo中心提醒:Flash摄像头游戏课件可以完成良多传统Flash课件难以完成的效果,出格是对操纵妙技的培育。我们开辟的《生果乐土》课件供应给一些小学,举行了英语进修理论,效果还不错。
【择要】摄像头游戏是跟着手艺的前进发生出来的一种新的游戏情势,它挣脱了鼠标与键盘的限定,给游戏者以全新的互动体验。Flash8供应的位图处置功效为Flash摄像头游戏的完成供应了大概。将摄像头游戏手艺引进到Flash课件的开辟,能够充实发扬其互动性和兴趣性,与传统Flash课件比拟,具有其不成替换的上风。该文提出计划Flash摄像头游戏课件的基础准绳,并以《生果乐土》课件为例,具体先容了开辟的历程和次要完成办法,为摄像头游戏类课件制造供应了参考。
【关头词】Flash;摄像头游戏;课件东北年夜学盘算机与信息迷信
【中图分类号】G434【文献标识码】B【论文编号】1009—8097(2008)01—0107—05
1、弁言
摄像头游戏是跟着摄像头的提高和图形图象手艺的不休开展而呈现的。它挣脱了鼠标键盘的限定,给游戏者带来全新的游戏体验,可以完成很多传统游戏没法完成的游戏效果。它经由过程摄像头将玩家投影到游戏中,由玩家本人做举措与游戏举行交互。画面中退场的仇人或道具都将对玩家的举措马上做出反响,让玩家体验到亘古未有的奇怪感。
Flash课件是用Flash的情势体现教授教养内容一种课件情势。Flash课件充实使用了Flash的直不雅性、互动性和文娱性,可以无效的变更先生的进修主动性,引发先生的进修兴趣,在以后的教授教养过程当中发扬着愈来愈年夜的感化。Flash摄像头游戏课件整合了摄像头游戏和Flash课件的长处,充实表现了“寓教于乐”的教授教养头脑。它带给先生全新的游戏感觉,可以极年夜的引发先生的进修乐趣。它可以引发先生的多种感不雅安慰,创建激烈的实在感,经由过程游戏过程当中先生与游戏的互动,还可以增进先生手、耳、眼和肢体的互相和谐,到达较好的教授教养效果。
2、Flash摄像头游戏课件的计划准绳
Flash摄像头游戏课件具有较好介入性、体验性,可以无效加强进修效果,进步进修效力,出格合适于先生举措类妙技的练习。在计划的过程当中,应遵守以下准绳,表现其共同的上风。
(1)教授教养性准绳
这是一切课件,使用于教授教养的最基础的请求,该类课件也不破例,在计划的过程当中,必需针对必定的教授教养方针,遵守认知历程的一样平常纪律,构造教授教养内容和教授教养举动。严密环绕“以先生进修为中央”的计划思绪。
(2)易用性准绳
摄像头游戏课件的交互,盘算机关于进修者的举措回应,都是创建在举措检测,捕获进修者举措影象的基本上。计划过程当中招考虑让进修者的操纵只管烦琐,易于上手利用。做好课件利用的匡助大概利用手册。
(3)迷信性准绳
课件的内容,不克不及有迷信性的毛病,这也是计划中基础请求,必需对课件一切呈示的内容,举行严厉细心的检察,包管先生看到的一切常识点,都必需迷信、正确,一样平常由课件开辟小组中学科专家把好关。
(4)艺术性准绳
假如一个课件的展现不仅获得优秀的教授教养效果,而日‘令人心旷神怡,令人取得美的享用,则说课件具有较高的艺术性。如许的课件是好的内容与美的情势的一致,美的情势能引发先生的乐趣,史好地体现内容。其体现有:展现的工具布局对称,色采温和,搭共同理,有审美性。
(5)体验性准绳
摄像头游戏课件因其交互的多维化,全方位,检测进修者举措,使得进修者的沉溺感很强,请求进修者的团体抽象和课件情况交融的过程当中,能让进修能怀孕临其境的感到,以是课件在计划的过程当中,注重课件情况,界面的元素,声响的效果,都一定能引发进修者的投进感。该准绳是摄像头游戏课件计划过程当中最主要的准绳,也是全部课件制造的关头,成败地点。
3、Flash摄像头游戏课件的计划与完成
在儿童英语教授教养中,引进Flash摄像头游戏课件,使得儿童挣脱键盘和鼠标的单一化的交互体例,而举行身材举措与盘算机的交互,加强儿童进修的体验感,能较好的帮助英语的进修。以下是计划与开辟的“生果乐土”课件的完成步骤和次要功效代码。
1.摄像头图象的捕捉
利用Camera类完成对摄像头图象的捕捉。Camera.get()办法前往对用于捕捉视频的Camera工具的援用。当SWF文件实验会见Camera.get()前往的摄像头时,FlashPlayer显现“回绝”对话框,用户可从当选择是同意仍是回绝对摄像头的会见,如所示。
setMode()办法将摄像头的捕捉形式设置为最切合指定请求的本机形式。
//新建一个Camera工具,实例名为my_cam,并设置工具属性。
varmy_cam:Camera=Camera.get();
my_cam.setMode(160,120,30,true);
2.摄像头图象的显现
1)显现图象
若要实践入手下手捕捉视频,必需将Camera工具附加到Video工具。attachVideo(source:Object):Void指定将在舞台上的Video工具的界限内显现的视频流(source)。
//新建一个Video工具,将Camera工具附加到Video上。
varmy_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利用FlashPlayer矢量出现器在方针图象上绘制源图象。利用Matrix、ColorTransform、BlendMode工具和方针Rectangle工具来把持出现的实行体例。大概也能够指定缩放时是不是应对位图举行光滑处置。这只合用于当源工具是BitmapData工具时的情形。
importFlash.display.BitmapData;
//创立BitmapData工具
Varsnapshot:BitmapData=new
BitmapData(output_vid._width,output_vid._height);
//从my_video猎取以后图象
now.draw(my_video);
4.活动检测的完成
该部分是全部摄像头游戏完成的中心。次要使用了Flash8的位图处置功效,即BitmapData类。
1)基础思绪
我们可使用getPixel(x,y)猎取前一张图片上每一个像素点的像素值,然后对照后一张图片中的每点的像素值,当像素的亮度差值变更到达必定水平时,以为该点产生了活动变更。经由过程这类体例,失掉前后两张图片的负片最终效果。
//阀值
tolerance=10;
//猎取以后图象now某一点的RGB值
nc=now.getPixel(x,y);
//白色通道
nr=nc>>16&0xff;
//绿色通道
ng=nc>>8&0xff;
//蓝色通道
nb=nc&0xff;
//盘算该点亮度值
nl=Math.sqrt(nr*nr+ng*ng+nb*nb)
//猎取前一快照before统一点的RGB值
bc=before.getPixel(x,y);
//白色通道
br=bc>>16&0xff;
//绿色通道
bg=bc>>8&0xff;
//蓝色通道
bb=bc&0xff;
//盘算该点亮度值
bl=Math.sqrt(br*br+bg*bg+bb*bb);
//盘算亮度值的变更
d=Math.round(Math.abs(bl-nl));
if(d>tolerance)
{
//该点产生了变更
}
可是这类办法存在盘算效力成绩。按图象巨细为180*160像素,每秒30帧盘算,每盘算一副图片必要的盘算次数为180*160*30。图象的像素越年夜,必要的盘算次数就越多。接纳隔点检测的办法能够在必定水平上减缓盘算压力,即每隔n个像素检测一次,如许电脑的盘算次数削减为本来的1/n。
2)改善思绪
Flash8供应的图象夹杂形式能够办理下面碰到的效力成绩。Flash8供应了11种图象夹杂形式。每种夹杂形式能够失掉分歧的夹杂效果。Different夹杂形式是基于两张图片之间的亮度差值举行盘算,从而失掉图片的负片效果。使用该形式,即可以失掉挪动像素的检测图象。
//将前一张快照before的图象绘制到以后快照now上,利用different夹杂形式
now.draw(before,newMatrix(),null,"difference");
图象中玄色暗示没有产生挪动,其他色彩暗示产生了挪动。因为Flash8供应的夹杂形式是接纳C++编码完成的,因而运转效力要比ActionScript编码加倍高效。
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.getNextHighestDepth());
//将摄像头猎取的图象显现在影片剪辑内
bitmap_mc.attachBitmap(now,1);
3)检测图象的静态显现
要完成检测图象的静态显现,必需不休的更新以后图象now和汗青图象before,并举行夹杂处置。能够把检测图象的功效写成办法snapshot(),每隔100毫秒挪用一次。
伪代码以下:
functionsnapshot(){
//猎取以后图象
//猎取检测图象
//将检测图象绘制到
//将检测图象中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的矩形地区的活动情形
functionismove(a,rectx,recty,rectw,recth){
vari,j;
varsum=0;
varpix;
for(i=1;i<=rectw;i++){
for(j=1;j<=recth;j++){
//图象程度翻转后取点地位绝对变更
pix=a.getPixel(160-i-rectx,j+recty);
if(pix>132361){
sum++;
}
}
}
//trace("sum="+sum);
if(sum>(recth*rectw/2)){
return(sum);
//该地区产生了活动
}else{
return0;
}
}
在该办法中,检测图象、检测地区极点坐标、检测地区巨细都为作为变量输出。接纳这类办法,进步了程序的重用性,还能够完成对活动物体的检测。
3)检测点的设置
所谓检测点,实践是一个影片剪辑。在举行地区检测时,以该影片剪辑的坐标(x,y)断定检测地区的坐标地位。检测点能够是一个不成见的帮助点,也能够是舞台中活动的物体。当把活动物体做为检测点时,跟着物体的挪动,检测地区也随之挪动,因而能够完成对活动物体的检测。检测点的感化:一是能够起到帮助点的感化,简化了检测地区定位的烦琐事情,使定位操纵可视化。二是完成了代码的重用,起到了简化程序的感化。
7.完成摄像头活动检测的把持接口
游戏中检测点接口的感化就是前往舞台中被触碰的检测点编号。在接口函数中,挪用了以上几个功效函数。前往值为检测点编号。
functionistouch(){
varmax:Number=0;
varmin:Number;
varnum:Number;
for(vari=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{
//一个检测点也没碰着!;
return0;
}
}
8.游戏交互功效的完成
游戏功效交互的完成办法和其他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)主把持体系的完成
主把持体系是完成互动功效的中心部分。次要事情就是把游戏中一切的功效模块集成起来,对各功效模块举行调剂和显现。一方面,主把持体系要吸收从摄像头功效接口授递的信息;一方面依据吸收的信息实行响应的功效代码。
4、停止语
Flash摄像头游戏课件可以完成良多传统Flash课件难以完成的效果,出格是对操纵妙技的培育。我们开辟的《生果乐土》课件供应给一些小学,举行了英语进修理论,效果还不错。可是,关于Flash摄像头游戏课件使用于先生初级头脑战略的练习,还没有举行深切的研讨,出格是脚色饰演型、成绩探求型等进修形式等实行,有待进一步的的探究和理论。
用flash动画制作软件制作的动画文件很小,这样便于在互联网上传输,而且它采用了流技术,只要下载一部分,就能欣赏动画,而且能一边播放一边传输送数据。 |
|