SurfaceView的了解
来源:互联网 发布:java中printf格式化输 编辑:程序博客网 时间:2024/06/06 12:41
核心的类
1 SurfaceView 展示电影的屏幕
内部双缓冲机制 显示界面的效率非常快 对内存和cpu的开销非常大的(当不可见的时候,回收)A 加载数据 显示界面B 显示界面 加载数据
2 SurfaceHolder 展示电影的内容
3 Thread 工作人员
需要满足两个条件 1. 在surfaceCreated之后创建, 在surfaceDestroyed 销毁
如何绘制界面
- 如何获取到Surface
- SurfaceVIew里面 获取不到Surface 但是能够获取到SurfaceHolder ,看看SurfaceHolder能否获取到Surface
- 拿到Surface以后 需要了解如何去绘制界面
- 由于SurfaceHolder已经具备Surface的功能了 ,所以就可以直接通过SurfaceHolder 去实现了
Surface
- lockCanvas 锁定画布 获取到一个画布 绘制界面了
- 绘制界面
- unlockCanvasAndPost 解锁画布提交
SurfaceHolder
里面具备了和Surface一样的方法 也可以锁定画布 解锁画布
其实SurfaceHolder 里面的就是通过Surface实现的
面向对象
把看到的事物 都封装成一个对象
Cocos2D
1 线程什么时候开启的
2. 注意 fps_images.png 图片放到asets目录下
CCDirector
- attachInView 开启线程
- runWithScene 运行场景
- 生命周期的方法 resume pause end
- setDisplayFPS 显示帧率
- setScreenSize 设置屏幕大小 自动屏幕适配
- setDeviceOrientation 设置屏幕的方向
CCScene
目前该类没有什么具体的功能,它只是作为一个项目中需要展示内容的根节点存在。
CCLayer
处理触摸事件
1. this.convertTouchToNodeSpace(event); 先把android坐标系中的点 转换成 cocos2d坐标系中的点
CCSprite
- setAnchorPoint 设置锚点
- setPosition 设置坐标
- setScale 设置缩放
- setFlipX(Y) 设置水平(垂直)翻转
- ccSprite.setOpacity(150); 设置不透明度 值越大越不透明
- setVisible 设置是否可见 true可见
CCNode
是 场景 图层 和精灵的基类
- ccp(float x,float y) 静态方法 创建一个点
- this.addChild(ccSprite);
- this.addChild(ccSprite, z); // 2 优先级
- this.addChild(ccSprite, 1, 10);// 参数3 标签
动作的处理 CCAction
CCFiniteTimeAction 和时间相关的动作
CCInstantAction 瞬时动作 闪现
CCIntervalAction 延迟动作 疾跑CCFollow 跟随动作
- CCRepeatForever 永不停止的循环
- CCSpeed 和速度相关的动作
MoveTo和MoveBy动作的区别
- to 移动到指定目的地
by 移动的坐标的改变
to没有相反的动作
- by 有相反动作
CCSequence 串行动作
CCSequence sequence=CCSequence.actions(ccJumpBy, reverse);
CCRepeatForever 永不停止的循环
Tintby
private void tint() { // 专门显示文字的精灵 // 参数1 显示的内容 参数2 字体的样式 3 字体的大小 CCLabel label=CCLabel.labelWithString("那些年,我们追过的女孩", "hkbd.ttf", 24); label.setColor(ccc3(50, 0, 255)); label.setPosition(200,200); this.addChild(label); ccColor3B c=ccc3(100, 255, -100); // 参数1 时间 参数2 变化后的颜色 CCTintBy by=CCTintBy.action(1, c); CCTintBy reverse = by.reverse(); CCSequence actions = CCSequence.actions(by, reverse); CCRepeatForever forever=CCRepeatForever.action(actions); label.runAction(forever);}
复杂的动作
- 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);}
0 0
- SurfaceView的了解
- 【SurfaceView】SurfaceView的初步学习
- Android控件之SurfaceView初步了解
- SurfaceView--扩展SurfaceView的基础模版代码
- android的surfaceView介绍
- SurfaceView的学习
- SurfaceView的基本使用
- Android的SurfaceView使用
- SurfaceView的基本使用
- 初学Android的surfaceView
- SurfaceView的简单使用
- 关于SurfaceView的问题
- SurfaceView的基本使用
- SurfaceView的时间
- SurfaceView的学习01
- surfaceView的简单介绍
- SurfaceView的使用实例
- surfaceview的介绍
- Makefile下 $(wildcard $^),$^,$@,$?,$<,$(@D),$(@F)
- 10007---Java中从控制台输入数据的几种常用方法
- POJ2407 欧拉函数
- elasticsearch相关配置
- C语言中static关键字的神奇之处
- SurfaceView的了解
- Java实现URI参数签名算法,确保应用与REST服务器之间的安全通信,防止Secret Key盗用、数据篡改等恶意攻击行为
- BestCoder Round #63 (div.1) A.sequence2
- 重新滚回来了
- 工作第二日
- 怎样通过MSG_WAITALL设置阻塞时间
- Android基础 获取屏幕的宽与高
- maodian
- avrisp mkii问题