Android cocos2dx游戏开发——示例程序HelloCpp源码分析

本文深入分析了Android平台上使用Cocos2dx进行游戏开发的HelloCpp示例程序,从HelloCpp.java开始,探讨了Activity的创建、Cocos2dxActivity的初始化过程,特别是GLSurfaceView和Cocos2dxRenderer的角色。文章还介绍了Cocos2dxGLSurfaceView如何作为游戏画面的关键View,并讲解了如何通过Cocos2dxRenderer的onSurfaceCreated和onDrawFrame方法进行渲染。
摘要由CSDN通过智能技术生成
  本文通过分析cocos2dx提供的示例程序HelloCpp来分析cocos2dx的启动过程。

      我们从HelloCpp.java开始:

  1. package org.cocos2dx.hellocpp;  
  2.   
  3. import org.cocos2dx.lib.Cocos2dxActivity;  
  4.   
  5. import android.os.Bundle;  
  6.   
  7. public class HelloCpp extends Cocos2dxActivity{  
  8.   
  9.     protected void onCreate(Bundle savedInstanceState){  
  10.         super.onCreate(savedInstanceState);  
  11.     }  
  12.       
  13.     static {  
  14.          System.loadLibrary("hellocpp");  
  15.     }  
  16. }  
package org.cocos2dx.hellocpp;

import org.cocos2dx.lib.Cocos2dxActivity;

import android.os.Bundle;

public class HelloCpp extends Cocos2dxActivity{

	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
	}
	
    static {
         System.loadLibrary("hellocpp");
    }
}

      HelloCpp是一个Activity,首先会执行静态代码块,加载libhellocpp.so库,然后就是执行onCreate方法,这里调用了父类的onCreate方法。我们看看Cocos2dxActivity的onCreate方法,该类在cocos2dx的库工程libcocos2dx中:

  1. @Override  
  2.     protected void onCreate(final Bundle savedInstanceState) {  
  3.         super.onCreate(savedInstanceState);  
  4.         sContext = this;  
  5.         this.mHandler = new Cocos2dxHandler(this);  
  6.   
  7.         this.init();  
  8.   
  9.         Cocos2dxHelper.init(thisthis);  
  10.     }  
@Override
	protected void onCreate(final Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		sContext = this;
    	this.mHandler = new Cocos2dxHandler(this);

    	this.init();

		Cocos2dxHelper.init(this, this);
	}

      这里主要是执行初始化过程,Cocos2dxHandler主要处理显示Dialog的消息,Cocos2dxHelper是个辅助类,我们主要看init()方法:

  1. public void init() {  
  2.           
  3.         // FrameLayout  
  4.         ViewGroup.LayoutParams framelayout_params =  
  5.             new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,  
  6.                                        ViewGroup.LayoutParams.FILL_PARENT);  
  7.         FrameLayout framelayout = new FrameLayout(this);  
  8.         framelayout.setLayoutParams(framelayout_params);  
  9.   
  10.         // Cocos2dxEditText layout  
  11.         ViewGroup.LayoutParams edittext_layout_params =  
  12.             new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,  
  13.                                        ViewGroup.LayoutParams.WRAP_CONTENT);  
  14.         Cocos2dxEditText edittext = new Cocos2dxEditText(this);  
  15.         edittext.setLayoutParams(edittext_layout_params);  
  16.   
  17.         // ...add to FrameLayout  
  18.         framelayout.addView(edittext);  
  19.   
  20.         // Cocos2dxGLSurfaceView  
  21.         this.mGLSurfaceView = this.onCreateView();  
  22.   
  23.         // ...add to FrameLayout  
  24.         framelayout.addView(this.mGLSurfaceView);  
  25.   
  26.         // Switch to supported OpenGL (ARGB888) mode on emulator  
  27.         if (isAndroidEmulator())  
  28.            this.mGLSurfaceView.setEGLConfigChooser(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值