随笔分类 - Cocos2d-x
摘要:一、简介 利用有限状态机来控制对象的行为,其原理就是利用多态,常常我们自己写代码,需要很大篇幅,万一需要再加一个或者几个状态,那么我们自己维护时就会很麻烦,SMC这个工具可以帮助我们解决这个问题。 使用这个工具之前我们需要jdk环境,最新版的SMC支持jdk1.7,之前版本的SMC支持jdk1....
阅读全文
摘要:首先还是就我个人的理解,讲讲游戏引擎的处理流程。其实游戏逻辑简单化就是一个死循环,如下:1 2 bool game_is_running = true;3 4 while( game_is_running ) { 5 update_game(); 6 d...
阅读全文
摘要:最近几天,我都在学习如何在Cocos2d-x3.2中使用OpenGL来实现对图形的渲染。在网上也看到了很多好的文章,我在它们的基础上做了这次的我个人认为比较完整的总结。当你了解了Cocos2d-x3.2中对图形渲染的流程,你就会觉得要学会写自己的shader才是最重要的。第一,渲染流程从2.x到3....
阅读全文
摘要:修改cocos2d-x-3.x\cocos\2d\platform\desktop\CCGLView.cpp GLView::onGLFWCharCallback方法//原来的方法如下:void GLView::onGLFWCharCallback(GLFWwindow *window, unsi...
阅读全文
摘要:1、修改cocos2d-x-3.x\cocos\2d\platform\desktop\CCGLView.cpp onGLFWKeyCallback函数 1 static void onGLFWKeyCallback(GLFWwindow* window, int key, int scancod...
阅读全文
摘要:可以在论坛看到, 修改一处即可.文件位置在:frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxActivity.java然后找到public Cocos2dxGLSurfaceView onCr...
阅读全文
摘要:Cocos2d-x从2.x版本到现在的Cocos2d-x 3.0 Final版,其引擎驱动核心依旧是一个单线程的“死循环”,一旦某一帧遇到了“大活儿”,比如Size很大的纹理资源加载或网络IO或大量计算,画面将 不可避免出现卡顿以及响应迟缓的现象。从古老的Win32 GUI编程那时起,Guru们就告...
阅读全文
摘要:3.0的截屏和2.x的截屏基本上相同,都是利用RenderTexture来处理,在渲染之前调用call函数,然后调用Cocos的场景visit函数对其进行渲染,渲染结束后调用end函数即可。只是3.0截屏需要在截完屏的下一帧才能处理RenderTexture,这点要注意。本文的重点在于如何将截图功能继承到Cocos2d-x 3.0引擎。1.集成到Director这里选择把截屏功能继承到Director中,让全局的导演来执行截屏功能是一个很好的主意。 1 void Director::saveScreenshot(const std::string& fileName,const std
阅读全文
摘要:手游《我叫MT》一开始会弹出一个游戏公告,有玩过的肯定都蛮熟悉的,这就是webview,就是一个网页。由于webview和平台相关,这里就介绍下cocos2d-x如何嵌入andorid的webview控件,在cocos2d-x中显示网页。1.JniJni这里我就不再多说了。可用参考wikipedia,或者微信飞机大战的移植篇。通过Jni,可以实现在cocos2d-x中调用Android的API,当然也可以进行传值。2.Android使用webview直接上代码。主要是处理布局和webview使用的问题。这里采用代码布局。以下操作在android的主类(cocos2dxActivity)中处理。
阅读全文
摘要:背景在学习cocos2dx时,我们在main函数中发现一句代码, 1 #include "main.h" 2 3 #include "AppDelegate.h" 4 5 #include "CCEGLView.h" 6 7 8 9 USING_NS_CC; 10 11 12 13 int APIENTRY _tWinMain(HINSTANCE hInstance, 14 15 HINSTANCE hPrevInstance, 16 17 LPTSTR lpCmdLine, 18 19 int nCmdShow) 20 21 { 2
阅读全文
摘要:Android程序使用代码的安装和卸载!!! 1 public class MainActivity extends Activity { 2 3 private String currentFilePath = "", currentTempFilePath = "", strURL = "", 4 fileEx = "", fileNa = ""; 5 File file2 = new File(Environment.getExternalStorageDirectory()+"
阅读全文
摘要:1)物理编辑工具Physics Editing Tools1 Mekanimo 网址:http://www.mekanimo.net/2 PhysicsBench 网址:http://www.cocos2d-iphone.org/forum/topic/90643 PhysicsEditor 网址:http://www.physicseditor.de/4 VertexHelper 网址:http://www.cocos2d-iphone.org/archives/7792)场景编辑工具Scene Editing Tools1 Cocoshop 网址:http://www.cocos2d-ip
阅读全文
摘要:今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以抓取PC上开发web时候的数据包,而且可以抓取移动端(Android,Iphone,WindowPhone等都可以),太强大了,以前搞web的时候,知道有一款叫做HttpWatch工具,可以抓取web的请求数据包的,但是和这款神器来比较,那都弱爆了!吹到现在都是无用的,下面就来看看实例吧(只演示Android平台的,因为我是搞Android的,哈哈)!开始兴奋吧!第一步:下载神器Fiddler,下
阅读全文
摘要:在使用Eclipse 直接编译NDK,有时候会报类似以下错误Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 7这是因为NDK指定的版本与minSdkVersion不一致的问题,这本身只是一个警告,但是在eclipse下就会编译报错,那么如何修复呢?只需要在你的工程的:Application.mk文件中添加如下代码即可:1 APP_PLATFORM := android-8其中8就是指的minSdkVersion,根据自己的实际情况进行替换!
阅读全文
摘要:看网上流传的Eclipse导入项目的方法都是在新建Android程序时使用“Create project form existing source”选项实现的导入,虽然也能实现,但感觉很山寨的样子,而且导入的项目还在原位,Eclipse不会自动将其复制到workspace目录,且如果预先将项目复制到workspace目录再导入的话就会报错,提示这里已经有一个同名项目了。正确的导入方法应该是先复制项目目录到workspace目录中,再执行以下操作:选择Existing Projects into Workspace:浏览并选定项目所在目录:注意,如果你之前没将项目复制到workspace目录,如
阅读全文
摘要:在unix和linux下的获取时间和在win32获得的时间是不同的,所以要分开来写。代码如下: 1 std::string Tools::get_date_now() 2 { 3 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) 4 struct cc_timeval now; 5 CCTime::gettimeofdayCocos2d(&now, NULL); 6 struct tm *tm; 7 time_t tp = now.tv...
阅读全文
摘要:游戏开发中往往会遇到数据的及时更新,层间通信等问题,例如游戏中花费金币购买道具,完成后需要及时更新状态栏的个人金币信息。Cocos2d-x给我们提供了一种解决方案,这就是使用观察者模式,CCNotificationCenter是一个单例类。使用的方式很简单,在初始化时可以添加一个观察者CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(ObserverModel::receiveMsg), "Update", NULL);然后在需要发消息的地方po
阅读全文
摘要:1.打开Resources文件下的info.plist文件2.在plist中添加一行,key为:View controller-based status bar appearance,设置value为NO(如下所示)这样即可隐藏掉状态栏。另外,如果以上方法行不通,网上还有其他方法。(ps:我没试过,因为我按照上述方法能隐藏。 先mark下)2. 如果不管用,在RootViewController.mm里面(Cocos2d-x项目),加上:1 - (BOOL)prefersStatusBarHidden2 {3 return YES;4 }3. 直接在RootViewController.mm里
阅读全文
摘要:相信大家在玩游戏的过程中都会遇到一个loading的界面,loading界面的作用主要是为了加载游戏中需要用到的资源。在比较大型的游戏中,资源通常会占用很大的空间,如果不做一个预加载,在切换界面的过程中很容易造成卡屏的现象。下面先给出运行效果。今天要讲解的内容便是加载界面中的进度条控件的使用方法,在这里我们只学习控件的使用,不讲解加载过程的逻辑处理。 所谓的进度条,其实不过是两张纹理的组合,其中一个纹理全部显示出来,而另一个纹理会随着加载的过程有一定的变化,我们可以为它设置一个动作,也可以直接设置它显示的百分比,首先我们来看一下两张图片 :这就是未加载时和加载完成后的进度条显示,加载完成后,.
阅读全文
摘要:一直使用vs2010开发cocos2dx,查看cocos2dx的log也一直使用CCLog来打印到vs2010的输出控制台,同时也可以将log输出到命令行窗口。log输出方法一:使用CCLog输出到vs控制台,当然了,这也可以跨平台输出log。如:CCLog("error buffer:%s" ,response->getErrorBuffer());log输出方法二:在打印前,加入以下代码:1 AllocConsole();2 freopen("CONIN$", "r", stdin);3 freopen("CONO
阅读全文