phaser是一款快速,免费及开源HTML5游戏框架,它支持WebGL和Canvas两种渲染模式,可以在任何web浏览器环境下运行,游戏可以通过第三方工具转为iOS、Android 支持的 Native APP,允许使用 JavaScript 和 TypeScript 进行开发。
phaser中的一切都是从Game类开始,所以我们暂时将Game类当作phaser的中心吧!当你new了一个Game之后,game中的很多属性就有了,phaser的核心可以用如下这张图表示。
这里我们经常使用的对象有load,time,world,input,camera。
在开发中,我们经常使用方式五创建phaser对象,当然你也可以根据自己的喜好选择,就看你是喜欢函数创建还是对象创建。
画布宽度,数字或字符串类型可选参数,默认为800,如果以字符串的形式给出,该值必须在0到100之间,为百分比,如果没有指定父容器,则默认为浏览器窗口
画布高度
指定渲染机制,值可以是Phaser.WebGL,Phaser.Canvas,Phaser.AUTO(自动尝试使用WebGL,如果浏览器或设备不支持,使用canvas)或者Phaser.HEADLESS(不进行渲染)
想插入游戏画布的DOM元素,画布的父元素,可选值为DOM本身或者是id,如果为空字符串,画布将被插入到body元素中
默认的状态对象,对象类型,可以是null,也可以是Phaser.state函数(初始化,预加载,创建,更新,渲染)
画布背景是否透明,布尔值,默认为false
是否绘制为平滑纹理,布尔值,默认为true
一个物理配置对象,在Physics world创建时传递,对象默认为null
参考文档: https://photonstorm.github.io/phaser-ce/Phaser.Game.html
中文网: http://www.phaserengine.com/
phaser小站: https://www.phaser-china.com/example-detail-422.html
社区: http://club.phaser-china.com/
接下来我们通过phaser实现一个小游戏以及快速入门,见识下phaser开发游戏的功能有多么的强大,需要说明的是,这个就是phaser官方入门的案例,废话不多说,直接上源码。
在这里,我们已经创建了游戏场景和加载了游戏场景,但是我们看到一片黑的,接下来我们加点东西。
我们看到屏幕的左上角出现了一颗星星,但是还是缺点什么,这种效果依然不是我们想要的效果,接下来我们让它更具体化。
在这里我们已经将场景加入进来了以及开启了物理引擎,当然这只是为后面做准备,然后我们创建了天空,大地和两个平板。大地和平板的位置定位,我们是通过坐标来进行的,
其中,大地和两个平板都被加到了platforms这个组中,这个组我们为它启动了物理属性,然后我们设置了大地和两个平板是不能动的,这样他们就不会由于撞击被改变位置。接下来,我们来加入一个小人,这个小人也是我们游戏的主角。
dude.png图片
同样是通过game.add.sprite将精灵加入进来,但是大家仔细看看dude.png这张资源图片,这是一个帧动画序列,里面包含了主角左移和右移的动画帧。我们同样给它开启了物理属性,然后设置了它的d性和重力。player.body.collideWorldBounds = true这句话设置了它会与边界进行碰撞,这就是为什么主角落下的时候,到游戏区域边界就不会掉下去,大家可以把这句话注释掉再运行,看看会是什么情况。在这里,我们还为小人添加了两个动画,一个是向左移动,一个是向右移动,分别指定了响应的动画帧,这也是为后续的动画做准备。
是不是很惊讶?要让主角站在地上,只要在update中加上一句,game.physics.arcade.collide(player, platforms)就可以了,这句话表示,检测主角与platforms组的碰撞,而大地正是在platforms组中,这样,主角就不会穿过大地了。同样地,当主角与两个平板碰撞时,也不会穿过了。接下来我们让主角运动。
我们希望让主角在按下方向左键的时候,向左移动,按下方向右键的时候,向右移动,为了实现这一功能,我们又定义了一个cursors,我们通过cursors = game.input.keyboard.createCursorKeys()来获取系统的键盘输入对象。然后,我们在update中,通过cursors.left.isDown来判断用户是否按下了键盘左键,如果按下了,我们给主角设置一个速度,然后播放左移的动画,方向右键的逻辑是一样的。如果方向左键和右键都没有按下,那么我们就通过player.frame来设置小人停在第4帧。小人的跳跃是通过方向上键来实现的,但是这里有一个条件,就是小人在空中的时候,不允许跳跃,所以,加上了一个player.body.touching.down的判断条件。
在create中,我们又创建了一个stars的组,在这个组中,添加了星星,然后设置了它们的重力,随机设置了d性,所以它们掉落的时候,碰到平板或者地面,会d起不同的高度。同样,星星也不能穿过地面,所以在update中,添加了碰撞检测。
还有一层碰撞检测就是小人和星星的碰撞,当主角和星星发生碰撞的时候,需要让星星消失,这时候,再添加碰撞检测的时候,我们还添加了一个回调函数collectStar,在这里面,我们的player和star都会作为参数传递进来,通过调用star.kill()将星星销毁。
1、说明书见http://www.drvsky.com/xerox/Phaser_3200MFP.htm2、XeroxPhaser3200mfp它是富士施乐 Phaser 3200MFP黑白激光多功能一体机
3、基本参数:
产品功能:打印/复印/扫描/传真
最大页面:A4
接口类型:USB2.0
打印分辨率:1200×1200dpi
打印速度:24ppm
耗材:113R00730
硬件ID:USB\Vid_0924&Pid_3DA4
等位基因的特定表达(allele specific expression,ASE)数据是后续分多分析的基础。利用它可以识别印记基因、研究蛋白截断变异以及用于量化顺式(cis)调控遗传变异的影响。虽然下游的分析具有多种形式,但是第一步总是要获得ASE数据。在最基本的层面上,ASE数据由RNA-seq读到的杂合子SNP位点生成,根据它们的序列可以对reads进行分型。但是一般情况下,不使用indel型变异,因为indel周围干扰数据的正确比对。
这里整理工具phASER(phasing and ASE fromRNA-seq)的具体用法,这个软件可以获得等位基因全部单倍型的可靠表达水平。 软件的作者认识 这是产生ASE数据的黄金标准,并且获得的数据可以用于任何感兴趣的下游分析。
phASER 运行于Python 2.7.x 并依赖下列包: SciPy , NumPy , samtools , tabix , bedtools , Cython
随后对软件进行解压
phASER 需要VCF文件和比对的bam文件。
注意:phASER是利用VCF文件中的杂合位点计算等位基因表达水平。
首先VCF需要压缩和建立索引
bam文件需要建立索引
如果bam文件是STAR产生的,mapq选255;如果bam文件是hisat2产生的,mapq选60。sampleID由call SNP之前的AddOrReplaceReadGroups 决定。
--threads N 线程数,但是phASER对多线程优化不好,使用多线程以后,很容易出报错。
prefix_output是输出文件的前缀,需要注意的是输出文件较多,为了防止文件混乱,最好每个样本输出到一个目录下。
--temp_dir ./tmp 为了防止系统没有空间储存临时文件,最好指定临时文件的位置。
--id_separator默认的分隔符是下划线 ‘_’ , 如果基因组scaffold的命子中包含下划线,这里要重新指定。
--output_read_ids 输出单倍型的reads ID,这个参数默认是0。reads ID的结果在haplotypic_counts.txt 这个文件里。
如果软件运行成功,最后会有类似信息
--haplotypic_counts 入读的文件是上步产生的 prefix.haplotypic_counts.txt
--features 为基因bed注释,这里要求要有基因名,染色体名和之前bam、vcf中的一定要一致。
结果文件如下:
aCount 和 bCount 列是唯一比对到单倍型的reads数,可用于下游分析。
aCount 对应vcf中ref单倍型,bCount对应vcf中alt单倍型。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)