日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

游戏引擎cocos2d-android使用大全

發布時間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏引擎cocos2d-android使用大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

做手機游戲需要三個核心的類,即:SurfaceView,SurfaceHolder,Thread。幀數要在30幀左右是最好的。

cocos2d游戲引擎

封裝好的框架,可直接使用
cocos2d-android (用java編程)

導演:控制場景的切換,控制開始和暫停
場景:添加圖層

圖層:添加精靈

精靈

全屏:
application:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

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

  • attachInView 開啟線程
  • runWithScene 運行場景
  • 生命周期的方法 resume pause end
  • setDisplayFPS 顯示幀率
  • setScreenSize 設置屏幕大小 自動屏幕適配
  • setDeviceOrientation 設置屏幕的方向

  • director.setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft);director.setDisplayFPS(true); //是否顯示幀率director.setAnimationInterval(1.0f/30); //鎖定幀率,只能向下鎖定director.setScreenSize(480, 320); //設置屏幕的大小,自動屏幕適配,必須在開啟線程之后調用

    CCScene

    目前該類沒有什么具體的功能,它只是作為一個項目中需要展示內容的根節點存在。

    CCLayer

    安卓的坐標原點是在左上角,而cocos2d坐標原點在左下角

    //按下的事件 @Override public boolean ccTouchesBegan(MotionEvent event) { //先把android坐標系中的點轉換為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

  • setAnchorPoint 設置錨點
  • setPosition 設置坐標
  • setScale 設置縮放
  • setFlipX(Y) 設置水平(垂直)翻轉
  • ccSprite.setOpacity(150); 設置不透明度 值越大越不透明
  • setVisible , 設置是否可見 true可見

  • ccSprite = CCSprite.sprite("z_1_attack_01.png");ccSprite.setAnchorPoint(0,0);// 設置錨點ccSprite.setPosition(100, 100);//設置坐標ccSprite.setScale(1); // 設置縮放//ccSprite.setFlipY(true);// X水平翻轉 Y垂直翻轉//ccSprite.setOpacity(0);//設置不透明度 值越大 越不透明 0-255ccSprite.setVisible(true);// 設置不可顯示// 把精靈添加到圖層上

    CCNode

    是 場景 圖層 和精靈的基類

  • ccp(float x,float y) 靜態方法 創建一個點
  • this.addChild(ccSprite);
  • this.addChild(ccSprite, z); // 2 優先級
  • this.addChild(ccSprite, 1, 10);// 參數3 標簽
  • 動作的處理,CCAction

    時間是秒

    CCMoveTo ccMoveTo=CCMoveTo.action(2,CCNode.ccp(200, 0));//參數1;移動的時間,單位秒,參數2:移動的距離

    1.CCFiniteTimeAction 和時間相關的動作

    CCInstantAction 瞬時動作 閃現 CCIntervalAction 延遲動作 疾跑

    2.CCFollow 跟隨動作
    3.CCRepeatForever 永不停止的循環

    CCRepeatForever forver=CCRepeatForever.action(sequence);

    4.CCSpeed 和速度相關的動作

    各種動作

    moveTo和moveBy的區別:

    1.to 移動到指定目的地;2.by 移動的坐標的改變

    1 to沒有相反的動作;2.by 有相反動作

    CCSequence 串行動作

    CCMoveBy ccMoveBy=CCMoveBy.action(2,CCNode.ccp(200, 0));//參數1;移動的時間,單位秒,參數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);

    旋轉和縮放
    >
    縮放:
    CCScaleBy ccScaleBy=CCScaleBy.action(1,0.5f);//基于錨點進行縮放


    旋轉:CCRotateBy和CCRotateTo都可以,同時CCRotateTo更實用(翻轉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,專門用來顯示文字的精靈

    CCLabel label=CCLabel.labelWithString("指令匯最棒", "hkbd.ttf", 24);label.setColor(ccc3(50,0,255));label.setPosdition(200,200);this.adChild(label);ccColor3B c=ccc3(100,255,-100);CCTintBy cb=CCTintBy.action(1, c);CCTintBy reverse=cb.reverse();CCSequence seq=CCSequence.actions(cb, reverse);CCRepeatForever forver=CCRepeatForever.action(seq);label.runAction(forver);

    閃碩

    CCBlink blink=CCBlink.action(3, 3);getSprite().runAction(blink);

    復雜的動作

  • CCSpawn 并行動作
  • CCSequence 串行動作
  • CCRepeatForever 永不停止的循環

  • private void JumpBy() {// 1 時間 單位秒 2 目的地 3 高出的高度 4 跳躍的次數CCJumpBy ccJumpBy=CCJumpBy.action(4, ccp(200, 100), 100, 2);CCRotateBy ccRotateBy=CCRotateBy.action(2, 360);// 并行動作CCSpawn ccSpawn=CCSpawn.actions(ccJumpBy, ccRotateBy);//并行起來了 跳躍的過程中伴隨著旋轉//CCJumpBy reverse = ccJumpBy.reverse();CCSequence sequence=CCSequence.actions(ccSpawn, ccSpawn.reverse());// 跳上去 跳回來(伴隨著旋轉) CCRepeatForever forever=CCRepeatForever.action(sequence);// 讓串行動作 永不停止循環了CCSprite sprite = getSprite();sprite.setAnchorPoint(0.5f, 0.5f); sprite.setPosition(50, 50);sprite.runAction(forever);}

    總結

    以上是生活随笔為你收集整理的游戏引擎cocos2d-android使用大全的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。