cocos2dx项目中新增场景类

WBOY
リリース: 2016-06-07 15:43:28
オリジナル
1328 人が閲覧しました

从0开始创建一个cocos2dx项目然后运行是可以的,但是如果我们要自己来创建属于自己的场景类呢? 理论永远只是停留在理论,实践过后才知道问题并不是那么简单: 初步尝试: 1.在项目工程中的classes文件夹中右击-添加-新建项--,然后开始写类代码; 2.在逻辑类

从0开始创建一个cocos2dx项目然后运行是可以的,但是如果我们要自己来创建属于自己的场景类呢?
理论永远只是停留在理论,实践过后才知道问题并不是那么简单:
初步尝试:
1.在项目工程中的classes文件夹中右击-添加-新建项--,然后开始写类代码;
2.在逻辑类中引用的时候就出问题了,就是#include"LoadingLayer.h",会提示找不到?
3.经过跟网络高手聊过之后才知道,默认创建的类路径实在sln默认路径下,而vs的项目却不能简单的include;
解决方法:
A.类路径有问题,可以手动设置下include path;
B.把新添加的默认sln目录下的源码文件手动拷贝到相应项目的Classes下(include默认引用目录);
last,.将vs工程中的新添加代码文件删掉,再重新add进来,恢复正常。
进入图解模式:
1.导入时出错提示

cocos2dx项目中新增场景类

2.查看新增文件的路径(在cocos的默认路径--sln路径--非CLasses路径)

cocos2dx项目中新增场景类

3.手动将新增源码文件copy到相应项目工程的Classes路径

cocos2dx项目中新增场景类

4.工程中先把源文件删掉,再右击Classes-add-现有项-找到Classes路径--添加新增文件

cocos2dx项目中新增场景类

5.回头查看引用新增文件的地方,路径有效,无错误提示

cocos2dx项目中新增场景类

cocos2dx正式开搞了呵、


编译过程问题复现:
1.win32可以正常编译显示,交叉编译不行:
提示 error: undefined reference to 'LoadingLayer::scenc e()'
意思就是说交叉编译的时候没有引用到这个类;
那么我们要进入到android工程中的Android.mk文件看下究竟:在LOCAL_SRC_FILES后面添加一行
    ../../Classes/LoadingLayer.cpp  记得在上一行后面加上反斜杠---->" \"
再次进入到cygwin中,找到相应Android目录,赋予权限,然后再./build_native.sh;
http://stackoverflow.com/questions/12125248/trying-to-switch-scenes-in-cocos2d-x-undefined-reference-to-diffmenuscene
2.当一切就绪,.so已经生成的前提下,在eclipse控制台中编译会出现如下错误提示:
Unable to add 'D:\series_cocos2d-x\cocos2d-x-2.2.1\cocos2d-x-2.2.1\projects\LoveHong\proj.android\assets\CloseNormal.png': Zip add failed
 ERROR: unable to process assets while packaging 'D:\series_cocos2d-x\cocos2d-x-2.2.1\cocos2d-x-2.2.1\projects\LoveHong\proj.android\bin\resources.ap_'
[2014-04-23 13:04:12 - LoveHong] ERROR: packaging of 'D:\series_cocos2d-x\cocos2d-x-2.2.1\cocos2d-x-2.2.1\projects\LoveHong\proj.android\bin\resources.ap_' failed

如果出现上述错误,这样解决:
在cygwin窗口中,cd assets ; chmod -R 777 *  【备用招数cd ..;  ./build_native.sh】
刷新eclipse中要编译的工程;【如果出现问题,以上步骤多试几次】
3.跑在真机上没啥问题,在模拟器中会有如下错误提示:
.......: No configs match configSpec
...
Emulator without GPU emulation detected.
说明开启的模拟器没有开启GPU支持----打开模拟器管理界面--选中自己要启动的模拟器--edit--choose Use Host GPU
如果你是用genymotion来作为模拟器,需要安装一个插件Genymotion-ARM-Translation;(自行检索)
因为geny是x86架构,非ARM架构,所以跑起来飞快;那么要安装一个能够转换成ARM架构的插件才可以完美运行;




ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!