专业建站公司,靓号网站建设,网站建设功能报价,网站排名优化培训电话做手机游戏需要三个核心的类#xff0c;即#xff1a;SurfaceView#xff0c;SurfaceHolder#xff0c;Thread。帧数要在30帧左右是最好的。 cocos2d游戏引擎 封装好的框架#xff0c;可直接使用 cocos2d-android #xff08;用java编程#xff09; 导演#xff1a;控… 做手机游戏需要三个核心的类即SurfaceViewSurfaceHolderThread。帧数要在30帧左右是最好的。 cocos2d游戏引擎 封装好的框架可直接使用 cocos2d-android 用java编程 导演控制场景的切换控制开始和暂停 场景添加图层 图层添加精灵 精灵 全屏 application: android:themeandroid:style/Theme.Black.NoTitleBar.Fullscreen Activity: android:screenOrientationlandscape 图片放到assess目录下 CCGLSurfaceView surfaceViewnew CCGLSurfaceView(this); setContentView(surfaceView);directorCCDirector.sharedDirector();//程序只能有一个导演director.attachInView(surfaceView); //开启线程CCScene ccSceneCCScene.node();//为了api和cocos-phone一致ccScene.addChild(new FirstLayer());director.runWithScene(ccScene); CCDirector attachInView 开启线程runWithScene 运行场景生命周期的方法 resume pause endsetDisplayFPS 显示帧率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 converTouchToNodeSpacethis.convertTouchToNodeSpace(event);// System.out.println(我被按了呜呜呜);CGRect boundingBoxccSprite.getBoundingBox(); //获取精灵的矩形event.getRawX();//判断点是否在矩形之中boolean containsPointCGRect.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 ccMoveToCCMoveTo.action(2,CCNode.ccp(200, 0));//参数1;移动的时间,单位秒参数2移动的距离1.CCFiniteTimeAction 和时间相关的动作 CCInstantAction 瞬时动作 闪现
CCIntervalAction 延迟动作 疾跑2.CCFollow 跟随动作 3.CCRepeatForever 永不停止的循环 CCRepeatForever forverCCRepeatForever.action(sequence);4.CCSpeed 和速度相关的动作 各种动作 moveTo和moveBy的区别 1.to 移动到指定目的地;2.by 移动的坐标的改变 1 to没有相反的动作;2.by 有相反动作 CCSequence 串行动作 CCMoveBy ccMoveByCCMoveBy.action(2,CCNode.ccp(200, 0));//参数1;移动的时间,单位秒参数2移动的距离CCMoveBy reverseccMoveBy.reverse();CCSequence sequenceCCSequence.actions(ccMoveBy,reverse);//串行动作sprite.runAction(sequence);跳跃动作 CCJumpBy ccJumpByCCJumpBy.action(2,ccp(200,200),50,1);sprite.runAction(ccJumpBy);旋转和缩放 缩放 CCScaleBy ccScaleByCCScaleBy.action(1,0.5f);//基于锚点进行缩放 旋转CCRotateBy和CCRotateTo都可以同时CCRotateTo更实用翻转120度 贝赛尔曲线运动 CCBezierConfig ccnew CCBezierConfig();cc.controlPoint_1ccp(0,0);cc.controlPoint_2ccp(100,100);cc.endPositionccp(200,0);CCBezierBy bezierByCCBezierBy.action(2,cc);getSprite().runAction(bezierBy);淡入淡出 CCFadeIn fadeInCCFadeIn.action(10);getSprite().runAction(fadeIn);加速度 CCMoveTo cmtCCMoveTo.action(10,CCNode.ccp(200,0));CCEaseOut easeOutCCEaseOut.action(cmt,10);//让移动按照一定加速度去移动getSprite().runAction(easeOut);颜色渐变 CCLabel专门用来显示文字的精灵 CCLabel labelCCLabel.labelWithString(指令汇最棒, hkbd.ttf, 24);label.setColor(ccc3(50,0,255));label.setPosdition(200,200);this.adChild(label);ccColor3B cccc3(100,255,-100);CCTintBy cbCCTintBy.action(1, c);CCTintBy reversecb.reverse();CCSequence seqCCSequence.actions(cb, reverse);CCRepeatForever forverCCRepeatForever.action(seq);label.runAction(forver);闪硕 CCBlink blinkCCBlink.action(3, 3);getSprite().runAction(blink); 复杂的动作 CCSpawn 并行动作CCSequence 串行动作 CCRepeatForever 永不停止的循环private void JumpBy() {// 1 时间 单位秒 2 目的地 3 高出的高度 4 跳跃的次数CCJumpBy ccJumpByCCJumpBy.action(4, ccp(200, 100), 100, 2);CCRotateBy ccRotateByCCRotateBy.action(2, 360);// 并行动作CCSpawn ccSpawnCCSpawn.actions(ccJumpBy, ccRotateBy);//并行起来了 跳跃的过程中伴随着旋转//CCJumpBy reverse ccJumpBy.reverse();CCSequence sequenceCCSequence.actions(ccSpawn, ccSpawn.reverse());// 跳上去 跳回来(伴随着旋转) CCRepeatForever foreverCCRepeatForever.action(sequence);// 让串行动作 永不停止循环了CCSprite sprite getSprite();sprite.setAnchorPoint(0.5f, 0.5f); sprite.setPosition(50, 50);sprite.runAction(forever);}