일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- .svn
- UIView
- 태그를 입력해 주세요.
- Derived Data
- LLVM
- NSHomeDirectory
- landscape
- /var/mobile/Applications
- release
- Default-568h.png
- scale
- 멀티태스킹
- CCLOG
- Debug
- ccbi
- Undefined symbols for architecture armv7s
- storyboard
- cocos2d-x
- Xcode
- SBTarget
- xib
- box2d
- Today
- Total
목록프로그래밍/Cocos2d-x (17)
standwally
Xcode에서 Box2D용 프로젝트를 만들 수 있다. 그런데 굳이, Xcode을 이용해 Box2D용 프로젝트를 만드는 방법을 이용하지 않아도 Box2D를 사용할 수 있다./cocos2d-x-2.1.4/external/Box2D 폴더를 통째로 복사해서 기존 Cocos2d-x 프로젝트에 추가하고, Box2D를 적용하고자 하는 클래스에 Box2D.h 파일을 include 해주면 된다.Box2D에서 복사해야될 파일과 폴더는Box2D.h 파일과, Collision, Common, Dynamics, Rope 이 4가지 폴더를 복사하면 된다. Xcode를 이용해 생성된 프로젝트는 Box2D의 간단한 기능이 포함되어 생성된다.자동으로 생성된 간단한 기능은 왠지 복잡해 보인다.그래서, HelloWorld.h와 .cpp ..
Tiny Wings, 앵그리 버드 등이 물리엔진을 적용한 대표적인 2D 게임이다.새가 가속도에 따라 날아가는 높이와 거리가 다르게 표현되고, 그리고 점점 지면으로 떨어지는 중력의 표현,또한 새가 물체와 부딪치고, 물체가 넘어지고하는 이 모든 것이 물리엔진과 관계가 깊다. Cocos2d-x에 라이브러리에 내장된 대표적인 물리엔진에는 2가지가 있으며 따로 설치할 필요가 없고 프로젝트 생성시에 사용하겠다는 체크만 해주면 된다.Box2DChipmunk 이중에서 Box2D는 C++언어 기반의 오픈소스이며, 앵그리 버드의 기반이 된 엔진이기도 하다.메뉴얼 : http://box2d.org/manual.pdf Box2D의 기본 개념World물리 객체들이 포함되고, 물리적인 현상들이 발생하는 공간기본적으로 최소 하나의..
아래와 같이 Xcode에서 cocos2d-x용 프로젝트를 생성하게 되면, 프로젝트 폴더내에 약 200메가가 되는 cocos2d-x 라이브러리 폴더가 같이 생성된다.왼쪽 Project Navigators의 폴더구조에서, libs/cocos2dx가 라이브러리의 전체 소스를 갖고 있는 폴더이다. 매번 Xcode에서 cocos2d-x용 프로젝트를 생성할 때 마다 200메가 정도의 라이브러리 소스 폴더를 생성하지 않고, 원본 라이브러리 소스의 경로를 지정하여 가져다 쓰는 방법을 알아보자.먼저, cocos2d-x용으로 생성된 프로젝트에서 libs/cocos2dx 폴더를 삭제하면 당연히 아래와 같은 링크 에러가 발생한다. 링크에러를 해결하기 위해서먼저, Add Files to "...."로 cocos2d-x가 설치되..
Java에서 C++함수를 호출하는 방법에 대해 알아보자.먼저, 임의의 Test.java파일에서 호출하고자하는 C++에 있는 함수를 아래와 같이 선언해준다.Test.java12345package com.hyonga.hello; public class Test extends Cocos2dxActivity { private native boolean setContentType(int a);}라인 4에서, 메서드 앞에 native라는 키워드는 NDK로 빌드할 때, 해당 메서드는 C++에 정의되어 있는 함수라는 것을 컴파일러에게 알려준다. 임의의 Hello.cpp 파일에서는 호출하고자 하는 함수를 아래와 같이 정의해준다.Hello.cpp123456789101112131415#if (CC_TARGET_PLATFOR..
먼저 C++에서는 아래와 같이 코드를 작성한다. #if문으로 타켓 플랫폼이 안드로이드일 경우에만 JniHelper.h파일을 include해준다.(JniHelper 클래스는 cocos2d-x에서 제공한다.) Java 메서드를 Non-Static으로 호출하기 위해서 메서드를 두번에 걸쳐 호출해준다. 먼저, Java Activity의 Context를 얻어오기 위한 호출을 먼저 해준다. JniMethodInfo 구조체와 jobject 객체를 선언한 다음에,JniHelper 클래스에 getStaticMethodInfo 함수를 통해 Java에서 호출하고자 하는 메서드 정보를 입력하여, 찾고자 하는 메서드의 존재여부를 확인한다.확인이 되면, CallStaticVoidMethod 함수로 Java의 메서드를 호출하고 리..
JNI에서 사용하는 Java 데이터 타입입니다.http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp9502
MainMenuScene.ccb라는 파일이 Custom class 'HelloWorldScene'와 연결되어 있다. 그리고, MainMenuScene.ccb 파일안에서 CCScrollView Container의 Sub-ccb파일로서,SubMenus.ccb파일이 연결되어 있다. MainMenuScene.ccb 의 UI에 이벤트 콜백 또는 멤버 변수가 있고,SubMenus.ccb UI에도 별도의 이벤트 콜백 또는 멤버 변수가 있다고치자, MainMenuScene.ccb 는 HelloWorldScene 클래스와 연결되어 있어서 해당 이벤트나 멤버 변수를 받아서 처리할 수 있다.하지만, SubMenus.ccb 파일도 Custom class로서 HelloWorldScene을 지정해 놓으면,Appdelegate.c..
안드로이드, 아이폰 통합 개발환경을 셋팅하면서, svn 소스 관리의 편의를 위해아래와 같은 폴더 구조로 변경하면서, Xcode에서 빌드후 iPhone에 바이너리 전송 오류가 발생하는,몇번 다시 꽂아도 "Xcode cannot run using the selected device" 상태가 되는 경우를 맞이했다.자세한 오류 메세지는 "Xcode cannot run using the selected device. Choose a destination with a supported architecture in order to run on this device"이며,어떤때는 "SBTarget is invalid"라는 메시지가 나올 때도 있다. Xcode를 종료했다가 다시 시작하면 최초 한번은 빌드 후 바이너리 전..
cocos2d-x에서 로그를 출력하는 함수는 CCLog입니다. 디버그 모드일 경우 또는 릴리즈 모드일 경우에 따라 로그 출력여부를 결정하기 위해서는먼저 CCLog 대신에 #define으로 정의된 CCLOG를 사용해야하며,해당 로그 출력여부를 설정하는 곳은, 안드로이드일 경우에는,경로, proj.android/jni/Application.mk 파일안에 있다.-DCOCOS2D_DEBUG=0이 부분에 값을 설정해주면 된다. Xcode일 경우에는, Build Setting에 Preprocessor Macros에서 확인할 수 있다.
CCControlButton 사용시, 일부 안드로이드 단말에서 Signal 11 에러가 발생하면서 앱이 튕기는 현상이 있다.개발 환경cocos2d-x 2.1.4android sdk 4.0.4Samsung 갤럭시 S2 아래 코드와 같이, CCControlButton을 create할 때, CCLabel 인스턴스를 만들어서 같이 매개변수로 전달해주지 않으면 다음 에러를 찍으면서 앱이 죽는다. // on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } CCScale9..