- 浏览: 932488 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
itzhongyuan:
java Random类详解 -
david_je:
你好,我看到你在C里面回调JAVA里面的方法是在native里 ...
Android NDK开发(1)----- Java与C互相调用实例详解 -
fykyx521:
请求锁是在 oncreate 释放实在ondestroy?? ...
Android如何保持程序一直运行 -
aduo_vip:
不错,总结得好!
Android读取assets目录下的资源 -
f839903061:
给的网址很给力哦!
Android 4.0.1 源码下载,编译和运行
在cocos2dx中的helloworld目录中
android 项目:
jni目录 Android.mk文件解析
LOCAL_PATH := $(call my-dir) //项目的根路径
include $(CLEAR_VARS)
LOCAL_MODULE := helloworld //工程项目名字
LOCAL_SRC_FILES := main.cpp //包含c c++文件的名字
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../cocos2dx \ //包含路径
$(LOCAL_PATH)/../../../../cocos2dx/platform \
$(LOCAL_PATH)/../../../../cocos2dx/include \
$(LOCAL_PATH)/../../../Classes //类文件在class目录中
LOCAL_LDLIBS := -L$(call host-path, $(LOCAL_PATH)/../../libs/$(TARGET_ARCH_ABI)) \ // 连接的库文件
-lcocos2d -llog -lgame_logic
include $(BUILD_SHARED_LIBRARY)
main.cpp文件:
入口文件
到classes目录中会看到c++的类文件
AppDelegate.h //函数变量的声明
HelloWorldScene.h
HelloWorldScene.cpp
android 项目:
jni目录 Android.mk文件解析
LOCAL_PATH := $(call my-dir) //项目的根路径
include $(CLEAR_VARS)
LOCAL_MODULE := helloworld //工程项目名字
LOCAL_SRC_FILES := main.cpp //包含c c++文件的名字
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../cocos2dx \ //包含路径
$(LOCAL_PATH)/../../../../cocos2dx/platform \
$(LOCAL_PATH)/../../../../cocos2dx/include \
$(LOCAL_PATH)/../../../Classes //类文件在class目录中
LOCAL_LDLIBS := -L$(call host-path, $(LOCAL_PATH)/../../libs/$(TARGET_ARCH_ABI)) \ // 连接的库文件
-lcocos2d -llog -lgame_logic
include $(BUILD_SHARED_LIBRARY)
main.cpp文件:
入口文件
#include "AppDelegate.h" //主要头文件 此应用的委托文件 #include "cocos2d.h" #include <jni.h> #include <android/log.h> #define LOG_TAG "main" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) using namespace cocos2d; extern "C" { void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thiz, jint w, jint h) { if (!cocos2d::CCDirector::sharedDirector()->getOpenGLView()) { cocos2d::CCEGLView *view = &cocos2d::CCEGLView::sharedOpenGLView(); view->setFrameWidthAndHeight(w, h); // if you want to run in WVGA with HVGA resource, set it // view->create(480, 320); cocos2d::CCDirector::sharedDirector()->setOpenGLView(view); AppDelegate *pAppDelegate = new AppDelegate(); cocos2d::CCApplication::sharedApplication().run(); } else { cocos2d::CCTextureCache::reloadAllTextures(); cocos2d::CCDirector::sharedDirector()->setGLDefaultValues(); } } }
到classes目录中会看到c++的类文件
AppDelegate.h //函数变量的声明
#ifndef _APP_DELEGATE_H_ #define _APP_DELEGATE_H_ #include "CCApplication.h" //应用程序头文件 /** @brief The cocos2d Application. The reason for implement as private inheritance is to hide some interface call by CCDirector. */ class AppDelegate : private cocos2d::CCApplication { public: AppDelegate(); virtual ~AppDelegate(); /** @brief Implement for initialize OpenGL instance, set source path, etc... */ virtual bool initInstance(); virtual bool applicationDidFinishLaunching(); //加载窗口完成 virtual void applicationDidEnterBackground(); virtual void applicationWillEnterForeground(); }; #endif // _APP_DELEGATE_H_ AppDelegate.cpp #include "AppDelegate.h" #include "cocos2d.h" #include "HelloWorldScene.h" //HelloWorld场景文件 #include "CCEGLView.h" //CCEGLView.h USING_NS_CC; AppDelegate::AppDelegate() { } AppDelegate::~AppDelegate() { } //实例化 并且 判断当前是哪个平台 bool AppDelegate::initInstance() { bool bRet = false; do { #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) //如果平台是CC WIN32 // Initialize OpenGLView instance, that release by CCDirector when application terminate. // The HelloWorld is designed as HVGA. CCEGLView * pMainWnd = new CCEGLView(); CC_BREAK_IF(! pMainWnd || ! pMainWnd->Create(TEXT("cocos2d: Hello JuneChiu"), 480, 320)); #endif // CC_PLATFORM_WIN32 #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) //如果平台是CC ios // OpenGLView initialized in testsAppDelegate.mm on ios platform, nothing need to do here. #endif // CC_PLATFORM_IOS #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //如果平台是CC android // OpenGLView initialized in HelloWorld/android/jni/helloworld/main.cpp // the default setting is to create a fullscreen view // if you want to use auto-scale, please enable view->create(320,480) in main.cpp // if the resources under '/sdcard" or other writeable path, set it. // warning: the audio source should in assets/ // cocos2d::CCFileUtils::setResourcePath("/sdcard"); #endif // CC_PLATFORM_ANDROID #if (CC_TARGET_PLATFORM == CC_PLATFORM_WOPHONE) //如果平台是CC WOPHONE // Initialize OpenGLView instance, that release by CCDirector when application terminate. // The HelloWorld is designed as HVGA. CCEGLView* pMainWnd = new CCEGLView(this); CC_BREAK_IF(! pMainWnd || ! pMainWnd->Create(320,480, WM_WINDOW_ROTATE_MODE_CW)); #ifndef _TRANZDA_VM_ // on wophone emulator, we copy resources files to Work7/NEWPLUS/TDA_DATA/Data/ folder instead of zip file cocos2d::CCFileUtils::setResource("HelloWorld.zip"); #endif #endif // CC_PLATFORM_WOPHONE #if (CC_TARGET_PLATFORM == CC_PLATFORM_MARMALADE) // MaxAksenov said it's NOT a very elegant solution. I agree, haha CCDirector::sharedDirector()->setDeviceOrientation(kCCDeviceOrientationLandscapeLeft); #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) // Initialize OpenGLView instance, that release by CCDirector when application terminate. // The HelloWorld is designed as HVGA. CCEGLView * pMainWnd = new CCEGLView(); CC_BREAK_IF(! pMainWnd || ! pMainWnd->Create("cocos2d: Hello World", 480, 320 ,480, 320)); CCFileUtils::setResourcePath("../Resource/"); #endif // CC_PLATFORM_LINUX #if (CC_TARGET_PLATFORM == CC_PLATFORM_BADA) CCEGLView * pMainWnd = new CCEGLView(); CC_BREAK_IF(! pMainWnd|| ! pMainWnd->Create(this, 480, 320)); pMainWnd->setDeviceOrientation(Osp::Ui::ORIENTATION_LANDSCAPE); CCFileUtils::setResourcePath("/Res/"); #endif // CC_PLATFORM_BADA #if (CC_TARGET_PLATFORM == CC_PLATFORM_QNX) CCEGLView * pMainWnd = new CCEGLView(); CC_BREAK_IF(! pMainWnd|| ! pMainWnd->Create(480, 320)); CCFileUtils::setResourcePath("./app/native/Resource"); #endif // CC_PLATFORM_QNX bRet = true; } while (0); return bRet; } //加载窗口 bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector *pDirector = CCDirector::sharedDirector(); // 实例化导演 pDirector->setOpenGLView(&CCEGLView::sharedOpenGLView()); //设置OpenGLView // enable High Resource Mode(2x, such as iphone4) and maintains low resource on other devices. // pDirector->enableRetinaDisplay(true); // turn on display FPS pDirector->setDisplayFPS(true); //设置是否显示帧率显示 // pDirector->setDeviceOrientation(kCCDeviceOrientationLandscapeLeft); // set FPS. the default value is 1.0/60 if you don't call this pDirector->setAnimationInterval(1.0 / 60); //设置动画间隔时间 // create a scene. it's an autorelease object CCScene *pScene = HelloWorld::scene(); //设置场景 // run pDirector->runWithScene(pScene); //运行场景 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() { CCDirector::sharedDirector()->pause(); //导演 暂停 // if you use SimpleAudioEngine, it must be pause // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); } // this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { CCDirector::sharedDirector()->resume(); //导演 运行 // if you use SimpleAudioEngine, it must resume here // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); //设置背景音乐 }
HelloWorldScene.h
#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld : public cocos2d::CCLayer { public: // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone virtual bool init(); //初始化 // there's no 'id' in cpp, so we recommand to return the exactly class pointer static cocos2d::CCScene* scene(); // a selector callback virtual void menuCloseCallback(CCObject* pSender); //关闭菜单 // implement the "static node()" method manually LAYER_NODE_FUNC(HelloWorld); }; #endif // __HELLOWORLD_SCENE_H__
HelloWorldScene.cpp
#include "HelloWorldScene.h" USING_NS_CC; CCScene* HelloWorld::scene() //实例化 HelloWorld场景 { // 'scene' is an autorelease object CCScene *scene = CCScene::node(); // 'layer' is an autorelease object HelloWorld *layer = HelloWorld::node(); // add layer as a child to scene scene->addChild(layer); //添加布景 // return the scene return scene; } // on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. //菜单项 图片实现 // add a "close" icon to exit the progress. it's an autorelease object CCMenuItemImage *pCloseItem = CCMenuItemImage::itemFromNormalImage( "CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback) ); //设置位置 pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) ); //创建菜单 // create menu, it's an autorelease object CCMenu* pMenu = CCMenu::menuWithItems(pCloseItem, NULL); pMenu->setPosition( CCPointZero ); this->addChild(pMenu, 1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label //创建标题 CCLabelTTF* pLabel = CCLabelTTF::labelWithString("Hello World", "Arial", 24); // ask director the window size CCSize size = CCDirector::sharedDirector()->getWinSize(); //用导演获取窗口的大小 // position the label on the center of the screen pLabel->setPosition( ccp(size.width / 2, size.height - 50) ); //设置标签的位置 // add the label as a child to this layer this->addChild(pLabel, 1); //添加标签到布景 // add "HelloWorld" splash screen" CCSprite* pSprite = CCSprite::spriteWithFile("HelloWorld.png"); //创建一个精灵 用图片 // position the sprite on the center of the screen pSprite->setPosition( ccp(size.width/2, size.height/2) ); //设置精灵的位置 // add the sprite as a child to this layer this->addChild(pSprite, 0); //添加这个精灵 return true; } void HelloWorld::menuCloseCallback(CCObject* pSender) //关闭菜单的事件 { CCDirector::sharedDirector()->end(); //调用导演的end方法 #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) exit(0); #endif }
发表评论
-
cocos2d-x学习之自动内存管理和常见宏
2013-07-29 15:41 9121.自动内存管理 1)概述 C++语言默认是 ... -
cocos2dx中利用xcode 调用java中的函数
2013-07-29 11:36 25271. 先把cocos2dx根目录中的 /Users/zhaos ... -
cocos2dx(v2.x)与(v1.x)的一些常用函数区别讲解
2013-07-29 10:35 1113第一个改动: CCLayer初始化 自定义Layer,类名 ... -
xcode与eclipse整合cocos2dx
2013-07-29 10:32 1223文档xcode版本是 204 1. 在xcode中创建coc ... -
粒子效果
2012-05-14 17:12 1006#ifndef __HELLOWORLD_SCENE_H__ ... -
cocos2dx 官网的小游戏 2
2012-05-12 19:48 1929第四节:怎样发射一些子弹 在HelloWorld.cpp文 ... -
cocos2dx 官网的小游戏 1
2012-05-12 18:07 1497cocos2dx 官网的小游戏 第一节: 创建各种平台的工程 ... -
两个eclipse 结合
2012-05-12 16:45 1111对于mac 平台,我使用的是两个eclipse来编写coc ... -
Cocos2d-x 0120 环境搭建
2012-05-12 09:37 1642从今天开始研究cocos2dx 游戏引擎 1.准备需要的 ... -
在android 上开发弹球例子 cocos2dx+box2d
2012-02-29 17:16 2573create-android-project.sh 批处理新 ... -
在cocos2d里面如何使用物理引擎box2d:弹球
2012-02-29 12:48 1345这个教程的目的就是让 ... -
cocos2d-x -物理引擎box2d(1)
2012-02-28 16:20 1670在游戏中我们经常要加入物理碰撞等和物理有关的内容,在游戏中加入 ... -
Cocos2d-x 结合Box2D开发Android游戏配置方法
2012-02-28 14:46 2635先通过 create-android-projec ... -
cocos2dx编译HelloWorld
2011-12-02 12:55 1728到cocos2d下载 cocos2d-1.0.1-x-0.9 ... -
让Cocos2d-x实现全屏等比缩放适配Android各种分辨率 续
2011-10-07 13:02 4918http://www.cnblogs.com/yangws/a ... -
Java如何将图片打包到jar中
2011-08-04 00:03 3258Eclipse中使用导出Jar包后 ...
相关推荐
标题中的“hello world hello world”和描述中的“hello world”似乎是在引用计算机编程中的经典入门程序,通常用于演示一个语言的基本输出功能。在大多数编程语言中,“Hello, World!”是初学者编写的第一个程序,...
在IPStreet-HelloWorld项目中,这个例子展示了如何通过API与IPStreet的专利分析服务进行交互。API(应用程序接口)是软件系统之间通信的一种方式,允许开发者利用服务提供商的功能来构建自己的应用程序。 首先,让...
2. 在项目中新建一个Java类,命名为 `HelloWorld`。 3. 将上述代码粘贴到类中。 4. 保存文件后,IDE会自动编译源代码(如果没有开启自动编译,需要手动编译)。 5. 可以通过IDE的运行功能或命令行中的 `javac Hello...
HelloWorld项目作为Cocos2d-x的学习起点,是理解该框架基本结构和工作原理的重要案例。通过这个项目,我们可以了解Cocos2d-x的项目组织方式以及核心组件的功能。 #### 项目结构分析 - **平台相关文件夹**:项目的...
"Struts2 HelloWorld"是学习Struts2框架的基础教程,通过这个例子,我们可以了解Struts2的基本配置和工作流程。 首先,让我们从项目结构开始。在"struts2_helloWorld"压缩包中,通常会包含以下几个关键文件: 1. *...
2. **创建新项目**:在VS2010中,选择C++ Win32控制台应用程序模板,为“helloworld”创建一个新的项目。 3. **编写代码**:在源文件中,引入必要的CREO库,例如`#include "proe.h"`,并使用CREO的API函数,如`...
**标题解析:** "JMX HelloWorld Download" 指的是一个关于Java Management Extensions(JMX)的简单示例,可能是用于教学或演示如何在Java应用中使用JMX技术。"Download"表明这是一个可以下载的资源,可能包含了...
在这个名为"springmvc_helloWorld"的项目示例中,我们将探讨如何利用Spring MVC实现一个简单的表单请求与响应。该项目旨在帮助初学者理解Spring MVC的核心概念和工作流程。 1. **Spring MVC 框架介绍** Spring MVC...
在`HelloWorld.asm`中,我们可能会看到类似以下的代码片段,用于打印"Hello, World!": ```assembly section .data hello db 'Hello, World!',0 section .text global _start _start: ; 设置段寄存器 mov ax,...
总结来说,虽然提供的信息有限,但我们可以联想到编程基础知识(如"hello world"),项目管理(如文档记录和测试阶段),以及数据处理工具(如Excel)在IT工作中的应用。在实际工作中,理解并掌握这些基本概念和技术...
在这个过程中,“NewHelloWorld”可能是指更新或改进后的“helloworld”程序,可能包含了更多的功能或者优化,以适应开发者的学习需求或者特定项目的开发要求。通过分析和实践这个新的版本,开发者可以进一步提高...
在Android系统中,"HelloWorld"程序是每个开发者入门的标志性项目,它展示了如何构建一个基本的Android应用程序。本文将深入解析Android系统源代码中"HelloWorld"的应用场景,帮助你理解Android系统的运行机制和应用...
在Android Studio环境中打开一个`HelloWorld`项目,首先映入眼帘的是项目的主要组成部分。根据文章描述,项目主要由两个关键文件夹构成: 1. **app 文件夹**:该文件夹存放着应用程序的核心代码和资源文件。 - **...
标题 "helloworld.rar" 暗示我们正在处理一个压缩文件,它可能包含了一个简单的“Hello, World”程序,这是初学者在学习编程时经常遇到的第一个示例。这个压缩包包含两个文件:`GNUmakefile` 和 `helloworld.m`。...
在标签中,“webgl”强调了项目所使用的图形库,“3d”表示项目涉及3D图形,“javascript”明确了编程语言,“helloworld”通常是指初级教程或示例项目,“demo”则表明这是一个可以运行的实例。这些标签有助于理解...
在Android开发领域,"HelloWorld"程序是每个初学者入门时的第一个项目,它标志着开发者向Android世界迈出的第一步。这个程序通常非常简单,但包含了Android应用开发的基本元素,让我们一起深入了解一下。 首先,...
在这个"springmvc注解版 helloworld"项目中,我们将深入探讨如何使用注解来配置和实现一个简单的Hello World应用。这个项目特别适合初学者入门,因为每个步骤都有详细的注释,确保你能理解每一行代码的作用。 首先...
通过运行这个"helloworld spring mvc"项目,开发者可以了解Spring MVC的基本流程:从浏览器发送请求到DispatcherServlet,DispatcherServlet根据配置找到对应的Controller方法执行,然后Controller处理请求并返回一...
在这个"springmvc项目helloworld"中,我们将深入理解Spring MVC的基本概念、工作原理以及如何创建一个简单的Hello World应用程序。 1. **Spring MVC 概述** - Spring MVC 是 Spring 框架为Web开发提供的模块,它...
通过分析这个"springmvc-maven-webapp-helloworld"项目,我们可以深入理解每个组件的作用,以及它们如何协同工作来构建一个完整的Web应用程序。同时,这也是一个很好的起点,可以帮助开发者逐步掌握SpringMVC、Maven...