android ListView优化相关

最近在做android相关的开发,ListView中有一个图片错位的问题,今天查了很多人写的一些东西,所以记录下来,算是一种加深理解吧。   ListView是一个非常常用的控件,功能可以扩展的很丰富,而且与GridView有很多相似的地方。都可以存放大量数据。而且当我们需要比较复杂的布局时,一般用SimpleAdapter,或者继承BaseAdapter自己重写。  如果是继承ArrayAdapter,SimpleAdapter的时候,由于父类本身维护了一个List,所以当有数据更新的时候,尽量用adapter的add,这样可以保证getCount()返回的值是正确。 这里面涉及到的一个比较重要的重写函数就是getView   在getView中有三种方式实现view的返回。  

Continue Reading →

android 中handler与looper

   Handler的概念: 顾名思义,handler在英语中是“操作着,处理者的意思”,而官方的文档给出的概念是,handler允许你发送或者处理Message对象或者Runable对象,这两个对象都是与线程的Message queue相关联的。每一个handler的实例(一个线程中可以有多个)都与单个的线程和那个线程对应的Messagequeue 关联,而处理的先后则按照发送消息的先后,先进先出进行处理。 根据自己的理解,handler主要负责message的发送与消息的处理。

Continue Reading →

cocos2d-x 2.2 移植wp8遇到的坑

这两天正在将之前的一款cocos2d游戏,移植到wp平台上,这里记录一下所遇到的问题以及解决方法。 我是用的cocos2d下面的例子程序进行修改的。 遇到的第一个问题是资源路径的问题,当时我把解决方案下面的Assert删除后自己又新建了Resources目录,但是导入资源时选择了与Classes同级目录的Resources目录,所以导致在程序中资源的路径都是根目录,没有文件夹了。后来用bing(这里吐槽一下,百度实在是无语,但是Google又太慢,有时候都打不开,所以bing是比较靠谱的)搜了下,找到了解决方案。 这是在微软官方找到的关于资源相关的东西,很不错,大家可以仔细看看 https://app.yinxiang.com/shard/s26/sh/d9a12437-c105-4c4d-8caf-dbcb2823396f/d2fb1c713a33365d4de3d29950dbf592 资源问题解决后,就剩下真机上测试了,用开发者帐号解锁手机后,便能很容易部署到手机上。

Continue Reading →

c++利用jni调用java的代码

起因 在公司的一个项目中,需要在cocos2d-x中调用android中java的代码,于是自己想了想,还是学一下比较好,这样能更加加深我对于编程的理解。 实践 于是自己开始在百度与google上搜索,终于搜索一篇关于cocos2d-x关于jni调用的文章。于是还是延续我以前学习的方法,直接将代码抄一遍,然后等到抄完之后也就理解的差不多了。 原文在这里 后来有搜索了一些,基本上就是抄这篇文章的。于是自己也开始写,将需要引用的一些库导入项目的库目录中。 接下来就是条件编译,只有在android平台上的时候,我们才进行编译这段代码。

Continue Reading →

box2d凹多边形的问题(多个fixture)

从昨天开始一直纠结于一个问题,就是我做的colorball中,用cctouchmove,但是小球一直就是有一些消不完全。 刚开始时怀疑cctouchmove的问题,由于cctouchmove在执行过程中,当用户鼠标或者手滑的很快的时候,倒是cctouchmove记录的点的个数严重不足,仅仅会记录几个离散的点。于是自己感觉是这方面的原因,所以今天早上开始写了一个自动补全点的函数,将剩下的空的点补全。可是,当写完后,进行测试,虽然可以解决一部分滑的过快导致的问题,但是还是没有完全解决有时候不能完全消去的问题,我是百思不得其解。

Continue Reading →

一个实现了多点触控的CCMenu类

一个实现了多点触控的CCMenu类 今天在做东西的时候,有一个问题一直没有解决,我的界面上有两个按钮,两个按钮分别绑定了不同的函数,但是,问题出现了,我想同时按下两个按钮的时候,只能响应一个,而另一个必须等待这个按钮抬起之后才能按下。 后来想了想也只能用多点触控了。 于是我自己写了一个类,继承了CCMenu。由于CCMenu继承了CCLayer,而CCMenu中又重写了 virtual void registerWithTouchDispatcher() { CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getTouchDispatcher()->addTargetedDelegate(this, kCCMenuHandlerPriority, true); }

Continue Reading →