Cocos2dx3.2 Crazy Tetris 由于遮罩引起的部分手机白屏

上一章是说明使用ClipplingNode制作遮罩,以显示不规则图形。但是这样一直到Android端,却在部分手机中发生了问题。

具体问题表现为:白屏,只有边界(右上角)有矩形色块。

这里其实是框架对Android手机引用OennGL时,设置上没有启用stencil buff的问题。

解决方案,在onCreateView构造函数中添加:

Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);

打开Cocos2dxGLSurfaceView的实现,发现其中并没有setEGLConfigChooser函数,而Cocos2dxGLSurfaceView继承自GLSurfaceView。查询了一下GLSurfaceView,发现有API:

void setEGLConfigChooser(int redSize, int greenSize, int blueSize, int alphaSize, int depthSize, int stencilSize)
//Install a config chooser which will choose a config with at least the specified component sizes, and as close to the specified component sizes as possible.

这里可以看到,最后一个参数就是对stencil的设置,而在Cocos2dxActivity的内部初始化中,我们可以看到,其设置是:

if (isAndroidEmulator())
   this.mGLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0);

关于制作游戏相关其他博客的目录,我放在利用Cocos2dx3.2制作重力版俄罗斯方块(Crazy
Tetris)

时间: 2024-10-13 15:25:50

Cocos2dx3.2 Crazy Tetris 由于遮罩引起的部分手机白屏的相关文章

Cocos2dx3.2 Crazy Tetris 绘制不规则方块 遮罩(ClippingNode的使用)

前面已经思考了可能遇到的消除和面积判定问题,那么接下来的问题就是如何显示这些由于消除可能引出的不规则图形. 在这里,我使用了ClippingNode(遮罩).关于ClippingNode网上的介绍都非常仔细,因此我在这里只是简单的说一下: 正如他的名字一样,他本身也是一个节点,因此可以参考我的最开始的一篇关于节点树的博文,使用他时,需要将其添加到另外一个节点中. 使用时需要注意的是要向其中添加模板(stencil)和底板.Stencil的意思就是类似模具一样的东西,可以想象,如果我们将模具的形状

Cocos2dx3.2 Crazy Tetris 游戏输入(键盘事件,重力事件,触摸屏事件)

游戏基本的逻辑功能之前已经完成,之后的问题就是如何去控制游戏中的方块.在电脑上,很显然就是使用键盘最为直接,而在手机上,考虑上要让操作方便,这里采用的是用重力感应控制左右移动,点击屏幕进行方块的旋转. 下面,就是加入这些事件的方法: 加入键盘事件,需要重写方法: virtual void onKeyPressed(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event* event); virtual void onKeyReleased(

Cocos2dx3.2 Crazy Tetris update 定时更新 游戏逻辑处理

现在,对于游戏的基本准备都已经做好,之后需要考虑的,就是游戏逻辑的处理,主要考虑一下几个方面: 1 判断方块是否已经落下停止,并下落新的方块: 2 方块落下后,判断是否符合消行条件,进行消行: 3 根据下落或者消行进行计分. 这些判断,需要定时处理,因此这里需要使用到默认更新的update. 在初始化中,需要调用: this->scheduleUpdate(); 如果需要停止更新,可以调用: this->unscheduleUpdate(); 这样,就可以在void update(float 

Cocos2dx3.2 CrazyTetris 单线裁剪 对于判断消除的思考(一)

由于不是规则的俄罗斯方块,在消除时,很可能产生不规则的图形,因此,如何判断是否达到消除条件,以及进行方块的裁剪将是本游戏的一个关键问题. 我在做这个游戏时,采用的是最直接的方法,也就是最笨的方法,直接进行裁剪判定.如果有比较好的算法,希望大家可以和我交流. 首先,接上一篇,由于我们创建的刚体模型,需要是凸多边形,因此,每个初始方块都由四个正方形小方块构成.如图: 而本游戏中,方块的旋转应该是任意的(而不是原版游戏中每次旋转都是90度).因此,当上面的方块停落时,很有可能是这样的方向: 因此,该方

大象跳转教你微信访问链接如何做遮罩提示跳转浏览器打开

微信访问链接如何做遮罩提示跳转浏览器打开 使用微信打开网址链接时,经常会遇到H5网页打不开,无法下载app等情况.那么此时就需要弹出一个遮罩提示用户在手机浏览器窗口打开.如此一来就再也不用管微信如何的更新,直接判断微信的ua,然后弹出一个遮罩提示用户在浏览器中打开下载,并且不加关闭的按钮. 简单的实现方案:1.使用浏览器打开我们需要用到的Elephantjump地址:http://www.go51w.cn/2.复制链接输入进工具框中,点击生成遮罩提示链接和二维码3.微信打开链接或扫描二维码 遮罩

mui开发注意事项

mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细的信息,请访问mui官网 DOM结构 关于mui页面的dom,你需要知道如下规则. 固定栏靠前 所谓的固定栏,也就是带有.mui-bar属性的节点,都是基于fixed定位的元素:常见组件包括:顶部导航栏(.mui-bar-nav).底部工具条(.mui-bar-footer).底部选项卡(.mui-bar-tab);这些元素使用时需遵循一个规则:

ios和android适配

一些情况下对非可点击元素如(label,span)监听click事件,ios下不会触发 解决方案:css增加cursor:pointer; 三星手机遮罩层下的input.select.a等元素可以被点击和focus(点击穿透) 问题发现于三星手机,这个在特定需求下才会有,因此如果没有类似问题的可以不看.首先需求是浮层操作,在三星上被遮罩的元素依然可以获取focus.click.change),有两种解决方案: 1.是通过层显示以后加入对应的class名控制,截断显示层下方可获取焦点元素的事件获取

MUI体验框架

1.      mui简介 1.1  缘起 mui框架在2014.05立项,2014.08在iweb峰会上发布,我们不是闲着没事,重复制造轮子,只是实在没有适合mobile开发的前端框架: 1.基于jq的jqmobile,性能低的无法忍受,且UI难看 2.bootstrap这种响应式设计,性能在低端机不足,而且UI风格一看就是网页,不是App的感觉. 3.framework7当时只能在iPhone上运行也无法被接受. 4.基于angular的ionic,把pc端很重的东西引入到移动App中,且a

20款带左右箭头的焦点图片轮播特效代码

20款带左右箭头的焦点图片轮播特效代码分享 html5带倒影3D图片叠加轮播切换特效 jQuery slide图片自动轮播滚动插件 jQuery焦点图插件带按钮控制图片轮播滚动代码 jquery仿hao123带新闻标题图片轮播滚动效果 jQuery仿瑞丽全屏透明遮罩图片轮播滚动代码 jQuery带网上开户表单的焦点图轮播代码 jquery左右箭头控制带缩略图片轮播切换 jQuery responsiveslides.js响应式图片轮播特效 jQuery OwlCarousel图片滚动插件世界杯图