COCOS2dX大师,我刚开始用COCOS2dX进行游戏开发并且在某些时候陷入困境。
我正在通过学习cocos2dx开发工具包提供的样本来开发一个简单的游戏。每件事情都很好。
游戏要求:
我所做的是:
我必须实现的目标:
简而言之,我需要在单个“CCScene”中执行这两项功能
提前感谢您提供最佳解决方案。
答案 0 :(得分:3)
这可以通过稍微更改libcocos2dx中的Cocos2dxActivity类来实现,以在那里添加VideoView。
首先,将此xml布局添加到libcocos2dx中的res / layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<VideoView
android:id="@+id/video"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="4" />
<FrameLayout
android:id="@+id/frame"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="6" >
</FrameLayout>
</LinearLayout>
此布局将是您应用的新布局。
其次,您必须将Cocos2dxActivity中的init()
方法更改为:
public void init() {
// Set our new layout as the content view
setContentView(R.layout.test);
// FrameLayout
//ViewGroup.LayoutParams framelayout_params =
//new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
//ViewGroup.LayoutParams.FILL_PARENT);
//FrameLayout framelayout = new FrameLayout(this);
//framelayout.setLayoutParams(framelayout_params);
Resources res = this.getResources();
int id = res.getIdentifier("YOUR_VIDEO_NAME_HERE", "raw", getPackageName());
if (id == 0) {
Log.e("Cocos2dx VIDEO", "ERROR! Resource id == 0");
Log.e("Cocos2dx VIDEO", "ERROR! Check name of video!");
} else {
VideoView vv = (VideoView) findViewById(R.id.video);
MediaController mc = new MediaController(this);
mc.setAnchorView(vv);
vv.setMediaController(mc);
vv.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + id));
vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
if (mp != null)
mp.setLooping(true);
});
vv.requestFocus();
vv.start();
}
FrameLayout framelayout = (FrameLayout) findViewById(R.id.frame);
// Cocos2dxEditText layout
ViewGroup.LayoutParams edittext_layout_params =
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
Cocos2dxEditText edittext = new Cocos2dxEditText(this);
edittext.setLayoutParams(edittext_layout_params);
// ...add to FrameLayout
framelayout.addView(edittext);
// Cocos2dxGLSurfaceView
this.mGLSurfaceView = this.onCreateView();
// ...add to FrameLayout
framelayout.addView(this.mGLSurfaceView);
// Switch to supported OpenGL (ARGB888) mode on emulator
if (isAndroidEmulator())
this.mGLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0);
this.mGLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());
this.mGLSurfaceView.setCocos2dxEditText(edittext);
//// Set framelayout as the content view
//setContentView(framelayout);
}
这将为您提供屏幕左侧40%的VideView和右侧60%的cocos游戏区域。
您应将视频放在项目的res / raw文件夹中。
此外,这是Android专用解决方案(基于您在问题中提供的标记)。要在iOS或其他平台上实现此目的,您必须对这些平台的cocos库代码进行其他更改。
编辑:记住清理(只是为了安全)并重建库。
答案 1 :(得分:0)
您可以在CCScene中安装两个CCLayer,一个层将播放视频,另一个层将播放游戏!