A. 如何使用Code IDE调试Cocos2d-JS开发的游戏
运行、测试游戏
1. 新建一个名为 CocosJSGame 的 Cocos javaScript 工程
2. 点击工具栏颂颂上的 debug 按钮
3. 默认情况下脚本会运行在我们提供的 mac 版本预编译 runtime 上。为了简单起见,我们不对默认值进行任何改动。如果你想要在其他我们支持的目标平台上调试程序,可参考下文的“在其它目标平台上调试”
如何调试
断点支持
可以在 javascript 脚本文件中增加断点
当断点被触发时选择 “Yes” 打开 Debug Perspective 透视图,可以看到很多与调试相关的视图,调用栈、变量和断点等等。
支持 Step over, Step into, Step out 等调试方式。
代码热更新
想更改右下角的 close 按钮的位置?closeItem.attr 方法是控制该按钮的显示位置的。
closeItem.attr({
x: size.width - 20,
y: 20,
anchorX: 0.5,
anchorY: 0.5
});
修改“x”上面的值,把"size.width-20" 改成 ""size.width/2" 然后保持修改, 你会发现,在没有重启的情况下 close 按钮的位置已经改变了,在屏幕底部的中间!
在其他目标平台上调试
通过工具栏上的打开 Debug Configurations 打开 Debug Configurations 页面
在页面的左侧,选择之前我们为你创建的名为CocosJSGame的configuration
在 iOS Simulator 上调试
选择iOS Simulator单选项
选择正确的runtime app
点击 Debug 按钮,预编译的 runtime 会被自动安装到模拟器中
在iOS设备上调试
首先,你需要一个 runtime IPA, 从 1.0.0-rc1 版本开始,你可以通过 Code IDE 自己迹猛编译一个,然后安装IPA到姿樱桥设备中
在 iOS 设备上启动 runtime
在 "Debug Configuration" 界面选择 Remote Debug 单选项
platform 选择 "iOS"
将设备的 ip 地址填写在 Device IP 上
最后点击Debug按钮
在 android 设备上使用 ADB 模式调试
在 "Debug Configuration" 界面选择 Android ADB Mode 单选项
选择正确的 runtime apk
点击Debug按钮
IDE 会自动安装配置中的 runtime apk 到你的连接设备上并启动runtime开始调试
在 Android 设备上使用网络模式调试
手动安装 runtime 到你的设备上,它被存放在 CocosLuaGame/runtime/android 目录中
手动启动 runtime,停留在 waiting 页面
在 "Debug Configuration" 界面选择 Remote Debug 单选项
platform 选择 "Android"
将设备的 ip 地址填写在 Device IP 上
点击Debug按钮
如何调试C++
从 1.0.0-rc1 版本开始,支持使用 XCode/Visual Studio 调试 C++ 代码的同时使用 Cocos Code IDE 调试 C++ 代码。
以调试 Mac 为例:
如果你还没有 C++ 代码,那么需要先添加(右击工程,Cocos Tools->Add Native Codes Support...)
使用 Xcode 打开 frameworks/runtime-src/proj.ios_mac 工程,并启动调试
回到 Cocos Code IDE,打开 "Debug Configuration" 页面,选择 Remote Debug 单选项
platfrom 选择 “Mac”
Target IP 填写 "127.0.0.1"
点击Debug按钮..
B. IntelliJ IDEA怎么导入已有的cocos2d-js工程
用枣扰腔首先cocos2d自带的脚本生成android的项目工程,导入eclipse,其中eclipse必须要安装c++插件,NDK之类的,接下来将Cocos2d的库文件考到eclipse下(其实就是android.mk文李闹件中用到的所有c++文件),然后在eclipse中用NDK编译,最后编译成功会生成.so文件,然后再运行就可以了。
Android Studio 是一个全新的 Android 开发环凳衫境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试
C. 如何在android平台上使用js直接调用Java方法
在Cocos2d-js 3.0beta中加入了一个新特性,在Android平台上我们可以通过反射直接在js中调用java的静态方法。它的使用方法很简单:
1 var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)
在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直接调用Java的静态方法,并且可以获得Java方法的返回值。下面介绍的类名和方法签名可能会有一点奇怪,但是Java的规范就是如此的。
类名
参数中的类名必须是包含Java包路径的完整类名,例如我们在org.cocos2dx.javascript这个包下面写了一个Test类:
123456789101112 package org.cocos2dx.javascript;public class Test { public static void hello(String msg){ System.out.println(msg); } public static int sum(int a, int b){ return a + b; } public static int sum(int a){ return a + 2; }}
那么这个Test类的完整类名应该是org/cocos2dx/javascript/Test,注意这里必须是斜线/,而不是在Java代码中我们习惯的点。
方法名
方法名很简单,就是方法本来的名字,例如sum方法的名字就是sum。
方法签名
方法签名稍微有一点复杂,最简单的方法签名是()V,它表示一个没有参数没有返回值的方法。其他一些例子:
(I)V表示参数为一个int,没有返回值的方法;
(I)I表示参数为一个int,返回值为int的方法;
(IF)Z表示参数为一个int和一个float,返回值为boolean的方法;
现在有一些理解了吧,括号内的符号表示参数类型,括号后面的符号表示返回值类型。因为Java是允许函数重载的,可以有多个方法名相同但是参数返回值不同的方法,方法签名正是用来帮助区分这些相同名字的方法的。
目前Cocos2d-js中支持的Java类型签名有下面4种:
D. cocos2d js 画线锯齿问题求解决方案
(1)由于cocos2d-js的main.js多了对retina屏行轮的控制,而且默认是false,这就有可能导致画质不清楚。
cc.view.enableRetina(false);
所以只要在enableRetina改为true,应该就改基可以看到清晰的画面。
cc.view.enableRetina(true);
开启可能enableRetina可能会对Android的机器造成卡顿,这里可以加入判断是否是iOS,再决定档歼信开启enableRetina
var sys = cc.sys;
if(sys.os === sys.OS_IOS || sys.os === sys.OS_OSX){
cc.view.enableRetina(true);
}else{
cc.view.enableRetina(false);
}
(2) 如果图片进行缩放的时候,可能也会造成锯齿
处理方法:在index.html 中加入
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi" />
E. Cocos2d-js 3怎么在Android上设置AdMob的banner
开始: 1)首先你需要在Sqlite3下载 sqlite3.h sqlite3.c这孙世租两个基础返胡文件(如果不高兴下载的话 后面我会则兆把教程源码放上来) 2)包装类选用 我在基于wrapper的基础上修改了包装类 加入平台初始化信息 主要是处理Android目录权限的问题 3)
F. cocos2d-js写的游戏发Android,怎么写超链接
cc.Application.getInstance().openURL
G. cocos2d-js报错怎么解决
cocos2d-x游戏开发旦弯之c++,js互相调用错误枯掘记没迟核录
多类型多参数传递时
错误:
if (argc > 0) {
jsval obj;
int roleId;
int nInterval;
int nlineId;
jsval jsRet;
JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp), "v", &obj);
JS_ValueToInt32(cx,obj,&roleId);
JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp+1), "v", &obj);
JS_ValueToInt32(cx,obj,&nInterval);
JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp+2), "v", &obj);
JS_ValueToInt32(cx,obj,&nlineId);
int createRoleId = CCGlobalJsp::CreateRole(roleId,nlineId,(float)nInterval);
CCLog("createRoleId = %d",createRoleId);
jsRet = int32_to_jsval(cx,createRoleId);
JS_SET_RVAL(cx,vp,jsRet);
}
H. Cocos2d-js 怎样通过jni调用android的Java非静态函数
Cocos2d-x3.0
//a static method
Sprite* HelloWorld::maskedSpriteWithSprite(Sprite* textureSprite, Sprite* maskSprite)
{
// 1
RenderTexture * rt = RenderTexture::create( maskSprite->getContentSize().width,
maskSprite->getContentSize().height );
// 2
maskSprite->setPosition(maskSprite->getContentSize().width/2,
maskSprite->getContentSize().height/2);
textureSprite->setPosition(textureSprite->getContentSize().width/2,
textureSprite->getContentSize().height/2);
// 3
maskSprite->setBlendFunc( BlendFunc{GL_ONE, GL_ZERO} );
textureSprite->setBlendFunc( BlendFunc{GL_DST_ALPHA, GL_ZERO} );
// 4
rt->begin();
maskSprite->visit();
textureSprite->visit();
rt->end();
// 5
Sprite *retval = Sprite::createWithTexture(rt->getSprite()->getTexture());
retval->setFlippedY(true);
return retval;
}
..
I. Cocos2d-x、Quick-Cocos2d-x、Cocos Studio、Cocos2d-js、Cocos Code IDE的区别
Cocos2d-x是跨平裤兆台的框架,用C++,包括windows、ios、正消android、linux等都可以移植。
Quick-Cocos2d-x是在Cocos2d-x上加了一些功能,具体我也没用过,我只用过Cocos2d-x。
而Cocos2d-js是用JS语言,主要是用于网页端游戏的开发。
Cocos Studio主要是游戏界面和动画的设计。
Cocos Code IDE是cocos官方发布的编程开发环举纯知境。如果不用官方的,我们可以用eclipse和vs等其他IDE,配置好之后进行开发。
Cocos2d-x的2.X版本和3.X差别还挺大的,两边的代码不太能兼容,需要一些小修改才能运行。
纯手打。。。
J. 自学cocos2d js游戏开发应该按什么步骤进行
跟你简要说一下我的自学路,以免你走弯路
背景:
有工作,而且很忙;在不影响工作基础上用业余时间鼓捣(经常会因为工作耽搁学习进度);基本没技术背景(初中qbasic、高中pascal半吊子),大学文科,工作也不是搞代码。因此我感觉我的自学路跟你还是挺契合的。
1
两年前的一天,决定要做独立游戏制作人。选定引擎cocos2d,开始学习objective-c语言;(如果你打算只在iOS平台开发可以学obj-c配合cocos2d或者sprite kit;如果打算跨平台就要用cocos2d-x和c++了;当然unity什么的也不错但是我还没尝试过,一直很向往)
2
我跳过了iOS程序开发(似懂非懂看完了斯坦福那一系列的教学视频),结合当时情况直接选择了cocos2d引擎,这时开始接触 @吴一刀 推荐的博客;我主要看的是子龙山人<子龙山人 - 博客园>、Ray Wenderlich<Ray Wenderlich>、Himi<黑米GameDev街区>这些博客里最基本的例子,知易那个以我当时的水平还看不懂。
3
尝试开始设计自己的简单游戏,我做打地鼠!当然比教学例子里的打地鼠复杂多了
4
这个过程中发现自己懂的实在是不够,所以又开啃这本书:Learn cocos2d 2 by Steffen Itterheim & Andreas Low
5
慢慢的发现需要一些趁手的工具和编辑器,并发展出一套自己构建于cocos2d之上的游戏设计架构。我目前的情况是这样:
关卡编辑我使用plist文件配合自己写的类;
sprite sheet使用TexturePacker<TexturePacker>;
动画/UI编辑最初自己手写太累,后来选择了cocosbuilder,请注意现在这个软件已经停止维护,转而引导用户使用SpriteBuilder<SpriteBuilder>(域名都做了自动跳转;SpriteBuilder我木有研究过,建议你研究一下)。
粒子编辑我自己还没实际用到,如果真正需要我感觉cocosbuilder的够我用的。//更新:后来用到了ParticleDesigner和cocosbuilder两个软件的粒子编辑混搭
我当时遇到的一个大麻烦是如何让cocosbuilder、cocos2d版本互相兼容且cocosbuilder无问题。大概情况是这样:cocosbuilder2.1和cocos2d-iphone2.0及2.1版本都不协调怎么办?;What version of Cocosbuilder and Cocos2d-iphone should I choose?
目前我使用的cocosbuilder 2.1版本(渐变层有bug、并且很可惜动画播放完没有触发消息的机制,我只好把每个动画时长都手动记录一下自己处理)
======3月12日更新======
在 @GarfieldKwong 指点下发现这个版本动画播放完是可以触发消息机制的,更高级版本3.x支持的效果应该是在动画中就加入callback的关键帧
新技能get√
具体代码可见下面学习案例的第一个例子里Explosion部分
=====================
cocosbuider的学习可以看两个例子Creating a Game with CocosBuilder;Introction to CocosBuilder;然后就是多用多尝试。
6
整个学习过程要学会查资料、学会寻求帮助,我主要用的stackoverflow(话说刚刚发现stackoverflow的reputation喜过15,终于可以投票了:)
在学习过程中得到了子龙山人(我认为本尊是这位 @屈光辉 )、LearnCocos2d作者Steffen、 @kubisoft 以及众多网上朋友的帮助,再次表示感谢。
7
硬件及开发者资格:看完c++开始看obj-c,这个过程一直是使用的vmware虚拟机安装的mac系统写程序;然后入手一个最便宜的mac pro、以及iPhone,尝试玩各种游戏;从看c++开始大约过了1年半(已经有非常简陋的游戏demo)才真正购入iOS开发者资格并开始真机测试。
8
尝试过的一些其他工具、各种弯路和坑、以及发散内容:
可以拖拽方式写代码的stencyl <Stencyl: Make iPhone, iPad, Android & Flash Games without code>;
最初学的不是ojc-c而是谭浩强老师的c++程序设计(虽然有人不喜谭老师,但那书是中文的让我对面对对象程序设计有一些初步的概念,再看英文的obj-c不至于太摸不着头脑,反正手头正好有这么一本买了6年没看的c++。。。);
尝试过<Tiled Map Editor>但自己目前的坑没有用到;
尝试过一点物理引擎和粒子,但自己目前的坑没有用到;现在粒子用到了,做了火焰等效果,也挺美的;但是一定要注意CPU占用优化,内存方面我最低支持4S没遇到大问题
学习音乐制作,这个我小时候学琴一直也喜欢音乐所以有一点点底子,如果没有基础可能上手有门槛;开始用的软件LMMS,但是音源插件在64位系统的问题我一直没解决掉时间精力也不多,所以是暂时停滞了;最近发现Garage Band可能也可以写歌;另外还试过一个很有历史的微软的音乐自动编辑器,很好玩,用来做背景音乐也不错。
入手手绘板学画画(这中间纠结了好久才决定用位图不用矢量图),如果你能找到热爱游戏的美术同学一起搞那最好不过。但是我一直对画画心痒难搔。。。所以入了这个深坑,晒一晒:
转载
z