游戏引擎cocos2d-android使用大全
做手機游戲需要三個核心的類,即:SurfaceView,SurfaceHolder,Thread。幀數(shù)要在30幀左右是最好的。
cocos2d游戲引擎
封裝好的框架,可直接使用
cocos2d-android (用java編程)
導演:控制場景的切換,控制開始和暫停
場景:添加圖層
圖層:添加精靈
精靈
全屏:
application:
Activity:
android:screenOrientation="landscape"
圖片放到assess目錄下
CCGLSurfaceView surfaceView=new CCGLSurfaceView(this); setContentView(surfaceView);director=CCDirector.sharedDirector();//程序只能有一個導演director.attachInView(surfaceView); //開啟線程CCScene ccScene=CCScene.node();//為了api和cocos-phone一致ccScene.addChild(new FirstLayer());director.runWithScene(ccScene);CCDirector
director.setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft);director.setDisplayFPS(true); //是否顯示幀率director.setAnimationInterval(1.0f/30); //鎖定幀率,只能向下鎖定director.setScreenSize(480, 320); //設(shè)置屏幕的大小,自動屏幕適配,必須在開啟線程之后調(diào)用
CCScene
目前該類沒有什么具體的功能,它只是作為一個項目中需要展示內(nèi)容的根節(jié)點存在。
CCLayer
安卓的坐標原點是在左上角,而cocos2d坐標原點在左下角
//按下的事件 @Override public boolean ccTouchesBegan(MotionEvent event) { //先把android坐標系中的點轉(zhuǎn)換為cocos2d坐標系中的點CGPoint converTouchToNodeSpace=this.convertTouchToNodeSpace(event);// System.out.println("我被按了,嗚嗚嗚!");CGRect boundingBox=ccSprite.getBoundingBox(); //獲取精靈的矩形event.getRawX();//判斷點是否在矩形之中boolean containsPoint=CGRect.containsPoint(boundingBox, converTouchToNodeSpace);if(containsPoint){ccSprite.setScale(ccSprite.getScale()+0.2);}else{ccSprite.setScale(ccSprite.getScale()-0.2);}return super.ccTouchesBegan(event); }CCSprite
ccSprite = CCSprite.sprite("z_1_attack_01.png");ccSprite.setAnchorPoint(0,0);// 設(shè)置錨點ccSprite.setPosition(100, 100);//設(shè)置坐標ccSprite.setScale(1); // 設(shè)置縮放//ccSprite.setFlipY(true);// X水平翻轉(zhuǎn) Y垂直翻轉(zhuǎn)//ccSprite.setOpacity(0);//設(shè)置不透明度 值越大 越不透明 0-255ccSprite.setVisible(true);// 設(shè)置不可顯示// 把精靈添加到圖層上
CCNode
是 場景 圖層 和精靈的基類
動作的處理,CCAction
時間是秒
CCMoveTo ccMoveTo=CCMoveTo.action(2,CCNode.ccp(200, 0));//參數(shù)1;移動的時間,單位秒,參數(shù)2:移動的距離1.CCFiniteTimeAction 和時間相關(guān)的動作
CCInstantAction 瞬時動作 閃現(xiàn) CCIntervalAction 延遲動作 疾跑2.CCFollow 跟隨動作
3.CCRepeatForever 永不停止的循環(huán)
4.CCSpeed 和速度相關(guān)的動作
各種動作
moveTo和moveBy的區(qū)別:
1.to 移動到指定目的地;2.by 移動的坐標的改變
1 to沒有相反的動作;2.by 有相反動作
CCSequence 串行動作
CCMoveBy ccMoveBy=CCMoveBy.action(2,CCNode.ccp(200, 0));//參數(shù)1;移動的時間,單位秒,參數(shù)2:移動的距離CCMoveBy reverse=ccMoveBy.reverse();CCSequence sequence=CCSequence.actions(ccMoveBy,reverse);//串行動作,sprite.runAction(sequence);跳躍動作
CCJumpBy ccJumpBy=CCJumpBy.action(2,ccp(200,200),50,1);sprite.runAction(ccJumpBy);旋轉(zhuǎn)和縮放
>
縮放:
CCScaleBy ccScaleBy=CCScaleBy.action(1,0.5f);//基于錨點進行縮放
旋轉(zhuǎn):CCRotateBy和CCRotateTo都可以,同時CCRotateTo更實用(翻轉(zhuǎn)120度)
貝賽爾曲線運動
CCBezierConfig cc=new CCBezierConfig();cc.controlPoint_1=ccp(0,0);cc.controlPoint_2=ccp(100,100);cc.endPosition=ccp(200,0);CCBezierBy bezierBy=CCBezierBy.action(2,cc);getSprite().runAction(bezierBy);淡入淡出
CCFadeIn fadeIn=CCFadeIn.action(10);getSprite().runAction(fadeIn);加速度
CCMoveTo cmt=CCMoveTo.action(10,CCNode.ccp(200,0));CCEaseOut easeOut=CCEaseOut.action(cmt,10);//讓移動按照一定加速度去移動getSprite().runAction(easeOut);顏色漸變
CCLabel,專門用來顯示文字的精靈
閃碩
CCBlink blink=CCBlink.action(3, 3);getSprite().runAction(blink);復雜的動作
private void JumpBy() {// 1 時間 單位秒 2 目的地 3 高出的高度 4 跳躍的次數(shù)CCJumpBy ccJumpBy=CCJumpBy.action(4, ccp(200, 100), 100, 2);CCRotateBy ccRotateBy=CCRotateBy.action(2, 360);// 并行動作CCSpawn ccSpawn=CCSpawn.actions(ccJumpBy, ccRotateBy);//并行起來了 跳躍的過程中伴隨著旋轉(zhuǎn)//CCJumpBy reverse = ccJumpBy.reverse();CCSequence sequence=CCSequence.actions(ccSpawn, ccSpawn.reverse());// 跳上去 跳回來(伴隨著旋轉(zhuǎn)) CCRepeatForever forever=CCRepeatForever.action(sequence);// 讓串行動作 永不停止循環(huán)了CCSprite sprite = getSprite();sprite.setAnchorPoint(0.5f, 0.5f); sprite.setPosition(50, 50);sprite.runAction(forever);}
總結(jié)
以上是生活随笔為你收集整理的游戏引擎cocos2d-android使用大全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实习周记_java程序员的实习周
- 下一篇: 如何在Mac电脑中设置投屏?Mac投屏,