cocos2d_x_01_环境搭建
终于效果图:


Cocos2d-x-3.3 Mac 安装
下载地址:

- 官网下载最新版本号Cocos2d-x-3.3,大小约为280M
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
- 解压后,在【终端】中
切换文件夹
到 解压后的文件夹,然后运行./setup.py
,回车,例如以下图所看到的.
- 解压后,在【终端】中
- 期间会有几次询问,是否要设置安卓SDK路径,
- 假设尚未安装Android开发环境,能够直接
Enter
跳过,暂不设置 - (将来 能够在以下的文件里,进行配置:/etc/profile)
1 |
|
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
source /Users/history/.bash_profile
Enter
,这样就算设置好了.
1 |
|
- 最后就是创建project.
- 继续命令行
cd tools/cocos2d-console/bin
,- 接着使用以下命令就可以:
cocos new project名 -p 包名 -l 语言 -d 目标目录
,- 比如 :
cocos newcocos2d_x -pcom.beyond -lcpp
-d /Users/beyond/Desktop/projectwatermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
- 运行后就有例如以下提示,表示OK~
1 |
|
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
#ifndef _APP_DELEGATE_H_
#define _APP_DELEGATE_H_ #include "cocos2d.h"
/**
@方法说明: The cocos2d Application. The reason for implement as private inheritance is to hide some interface call by Director.
*/
// : private 表示 继承过来的东东,全变成私有
class AppDelegate : private cocos2d::Application
{
public:
// 空參构造函数
AppDelegate();
// 析构函数
virtual ~AppDelegate(); virtual void initGLContextAttrs(); /**
@方法说明: Implement Director and Scene init code here.
@返回: true 初始化成功,应用执行
@返回: false 初始化失败,应用终止
*/
virtual bool applicationDidFinishLaunching(); /**
@方法说明: 应用程序 进入后台后 调用
@參数: the pointer of the application
*/
virtual void applicationDidEnterBackground(); /**
@方法说明: 应用程序 将进入前台时调用
@參数: the pointer of the application
*/
virtual void applicationWillEnterForeground();
}; #endif // _APP_DELEGATE_H_
#include "AppDelegate.h"
#include "HelloWorldScene.h" USING_NS_CC; AppDelegate::AppDelegate() { } AppDelegate::~AppDelegate()
{
} //假设 须要一个不同的 上下文 context,仅仅要改动 glContextAttrs 的值就可以
//it will takes effect on all platforms
void AppDelegate::initGLContextAttrs()
{
//设置 OpenGL context 属性,文件夹仅仅能设置6个属性
//red,green,blue,alpha,depth,stencil
GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8}; GLView::setGLContextAttrs(glContextAttrs);
} bool AppDelegate::applicationDidFinishLaunching() {
// 实例化导演类 director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
// 假设 glview为空,则创建一个
if(!glview) {
glview = GLViewImpl::create("My Game");
director->setOpenGLView(glview);
} // 显示帧率 FPS
director->setDisplayStats(true); // 设置帧率 FPS. 默认就是 1/60秒
director->setAnimationInterval(1.0 / 60); // 创建场景,自己主动释放 it's an autorelease object
auto scene = HelloWorld::createScene(); // 导演执行场景
director->runWithScene(scene); return true;
} // This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground() {
Director::getInstance()->stopAnimation(); // if you use SimpleAudioEngine, it must be pause
// SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
} // this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
Director::getInstance()->startAnimation(); // if you use SimpleAudioEngine, it must resume here
// SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h"
// 事实上是继承自Layer
class HelloWorld : public cocos2d::Layer
{
public:
// cpp里面没有id类型, so we recommend returning the class instance pointer
static cocos2d::Scene* createScene(); // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init(); // 【关闭菜单】点击时的回调方法
void menuCloseCallback(cocos2d::Ref* pSender); // implement the "static create()" method manually
CREATE_FUNC(HelloWorld);
}; #endif // __HELLOWORLD_SCENE_H__<span style="font-family:Courier New;color:#393939;"><span style="font-size: 24px; line-height: 32px; background-color: rgb(245, 245, 245);"><strong>
</strong></span></span>
#include "HelloWorldScene.h" USING_NS_CC; Scene* HelloWorld::createScene()
{
// 'scene' 自己主动释放
auto scene = Scene::create(); // 'layer' 自己主动释放
auto layer = HelloWorld::create(); // 将图层 加入到场景中
scene->addChild(layer); // 返回 填充好图层的 场景
return scene;
} // on "init" you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. 调用父类的init , cpp 没有super,直接写父类名
if ( !Layer::init() )
{
return false;
}
// 屏幕尺寸
Size visibleSize = Director::getInstance()->getVisibleSize();
// 2维坐标
Vec2 origin = Director::getInstance()->getVisibleOrigin(); /////////////////////////////
// 2. add a menu item with "X" image, which is clicked to quit the program // add a "close" icon to exit the progress. it's an autorelease object
auto closeItem = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
origin.y + closeItem->getContentSize().height/2)); // create menu, it's an autorelease object
auto menu = Menu::create(closeItem, NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu, 1); /////////////////////////////
// 3. add your codes below... // add a label shows "Hello World"
// create and initialize a label auto label = LabelTTF::create("Hello Beyond", "Marker Felt", 50); // position the label on the center of the screen
label->setPosition(Vec2(origin.x + visibleSize.width/2,
origin.y + visibleSize.height - label->getContentSize().height)); // add the label as a child to this layer
this->addChild(label, 1); // add "HelloWorld" splash screen"
auto sprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer
this->addChild(sprite, 0); return true;
} void HelloWorld::menuCloseCallback(Ref* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
return;
#endif Director::getInstance()->end(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
}
cocos2d_x_01_环境搭建的更多相关文章
- .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...
- Azure Service Fabric 开发环境搭建
微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...
- rnandroid环境搭建
react-native 环境搭建具体步骤这个大家已经玩烂了,这个主要是记录下来自己做win7系统遇到的坑 1.com.android.ddmlib.installexception 遇到这个问题,在 ...
- python开发环境搭建
虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...
- springMVC初探--环境搭建和第一个HelloWorld简单项目
注:此篇为学习springMVC时,做的笔记整理. MVC框架要做哪些事情? a,将url映射到java类,或者java类的方法上 b,封装用户提交的数据 c,处理请求->调用相关的业务处理—& ...
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
- Nexus(一)环境搭建
昨天,成功搭建了自己的 Maven 环境(详见:Maven(一)环境搭建),今天就来研究和探讨下 Nexus 的搭建! 使用背景: 安装环境:Windows 10 -64位 JDK版本:1.7 Mav ...
- 「译」JUnit 5 系列:环境搭建
原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...
- appium+robotframework环境搭建
appium+robotframework环境搭建步骤(Windows系统的appium自动化测试,只适用于测试安卓机:ios机需要在mac搭建appium环境后测试) 搭建步骤,共分为3部分: 一. ...
随机推荐
- 使用 satis 搭建 composer 本地仓库
环境 windows nginx php composer 安装 拉取 satis 项目包,并拉取项目依赖 composer create-project composer/satis --stabi ...
- 自备LocalDateTime工具类
package cn.zytao.taosir.common.utils; import java.time.Instant; import java.time.LocalDate; import j ...
- 20130907.Git学习记录
1.任何文件在Git内都只有三种状态: ①已提交(committed):已提交表示该文件已经被安全地保存在本地数据库中了: ②已修改(modified):已修改表示修改了某个文件,但还没有提交保存: ...
- shiro + maven 的web配置(不整合spring)
本文采用的是1.4.0版本的shiro 官方中说的1.2之前,和之后的shiro配置分别为: 1.2之前: <filter> <filter-name>iniShiroFilt ...
- xftp和xshell的使用
Xftp和Xshell配合使用部署环境. (linux系统) Xftp为可视化工具.主要用来复制文件. xshell则通过输入命令来对server进行操作,如启动服务等等. 一. Xftp的连接 新 ...
- POJ 1281 MANAGER
MANAGER Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Description O ...
- LeetCode -- 求字符串数组中的最长公共前缀
题目描写叙述: Write a function to find the longest common prefix string amongst an array of strings.就是给定1个 ...
- Compiler Warning (level 2) CS0436
https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs0436 // CS0436_a.cs // compile with: /target:l ...
- TabPage判断重复添加Page
..... ........ ...........代码如下: bool isPag = true; foreach (TabPage page in tbpDynamicMenu.TabPages) ...
- quartz.net定时任务框架详解
C#做定时任务:一是Timer:而是Quartz.net:本文就学习一下Quartz.net框架 Quartz.net非常的灵活,开发人员能用很少的代码就能完成“每隔一小时执行”.“每天2点执行”.“ ...