《canvas》之第5章 文本操作

130 篇文章 4 订阅
20 篇文章 2 订阅

第5章 文本操作

5.1 文本操作简介

方法说明
fillText()绘制填充文本
strokeText()绘制描边文本
measureText()获取文本长度
属性说明
font定义文本字体样式(大小、粗细等)
textAlign定义文本水平对齐方式
textBaseline定义文本垂直对齐方式
fillStyle定义画笔填充路径的样式
strokeStyle定义画笔描边路径的样式

5.2 文本操作方法

strokeText()、fillText()、measureText() 。

5.2.1 strokeText()方法

绘制描边文本,空心文本。

strokeText(text, x, y, maxWidth)

x,y表示文本最左边和最下边的坐标。
maxWidth,可选参数,最大文本宽度(px),超出时,文本会被压缩至maxWidth。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <meta charset="utf-8" />
    <script type="text/javascript">
        function $$(id) {
            return document.getElementById(id);
        }
        window.onload = function () {
            var cnv = $$("canvas");
            var cxt = cnv.getContext("2d");

            var text = "绿叶学习网";
            cxt.font = "bold 30px 微软雅黑";
            cxt.strokeStyle = "purple";
            cxt.strokeText(text, 30, 60);
            //cxt.strokeText(text, 30, 60, 100);
        }
    </script>
</head>
<body>
    <canvas id="canvas" width="200" height="150" style="border:1px dashed gray"></canvas>
</body>
</html>

5.3.2 fillText()方法

绘制填充文本,实心文本。

fillText(text, x, y, maxWidth)
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <meta charset="utf-8" />
    <script type="text/javascript">
        function $$(id) {
            return document.getElementById(id);
        }
        window.onload = function () {
            var cnv = $$("canvas");
            var cxt = cnv.getContext("2d");

            var text = "绿叶学习网";
            cxt.font = "bold 30px 微软雅黑";
            cxt.fillStyle = "purple";
            cxt.fillText(text, 30, 60);
            //cxt.fillText(text, 30, 60, 100);
        }
    </script>
</head>
<body>
    <canvas id="canvas" width="200" height="150" style="border:1px dashed gray"></canvas>
</body>
</html>

5.2.3 measureText()方法

返回一个对象,该对象width属性获取文本长度。

var length = ctx.measureText(text).width; 
  • 获取文本高度
let metrics = ctx.measureText(text); 

//所有字在这个字体下的高度
let fontHeight = metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent; 

// 当前文本字符串在这个字体下用的实际高度
let actualHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent; 
  • 文本长度
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <meta charset="utf-8" />
    <script type="text/javascript">
        function $$(id) {
            return document.getElementById(id);
        }
        window.onload = function () {
            var cnv = $$("canvas");
            var cxt = cnv.getContext("2d");

            var text = "绿叶学习网";
            cxt.font = "bold 30px 微软雅黑";
            cxt.strokeStyle = "red";
            cxt.strokeText(text, 30, 60);

            var length = cxt.measureText(text).width;
            alert("文本长度为" + length + "px");
        }
    </script>
</head>
<body>
    <canvas id="canvas" width="200" height="150" style="border:1px dashed gray"></canvas>
</body>
</html>
  • 文本水平居中
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <meta charset="utf-8" />
    <script type="text/javascript">
        function $$(id) {
            return document.getElementById(id);
        }
        window.onload = function () {
            var cnv = $$("canvas");
            var cxt = cnv.getContext("2d");

            var text = "绿叶学习网";
            cxt.font = "20px bold";
            var textWidth = cxt.measureText(text).width;
            var canvasWidth = cnv.width;
            var xPosition = canvasWidth / 2 - textWidth / 2;

            cxt.fillStyle = "purple";
            cxt.fillText(text, xPosition, 50);
        }
    </script>
</head>
<body>
    <canvas id="canvas" width="200" height="150" style="border:1px dashed gray;"></canvas>
</body>
</html>

5.3 文本操作属性

font、textAlign、textBaseline。

5.3.1 font属性

定义文本的字体样式。

ctx.font = "font-style font-weight font-size/line-height font-family";

font默认值为10px sans-serif。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <meta charset="utf-8" />
    <script type="text/javascript">
        function $$(id) {
            return document.getElementById(id);
        }
        window.onload = function () {
            var cnv = $$("canvas");
            var cxt = cnv.getContext("2d");

            var text = "helicopter";
            cxt.font = "bold 30px 微软雅黑";
            cxt.fillStyle = "purple";
            cxt.fillText(text, 30, 60);
        }
    </script>
</head>
<body>
    <canvas id="canvas" width="200" height="150" style="border:1px dashed gray"></canvas>
</body>
</html>

5.3.2 textAlign属性

定义文本水平方向的对齐方式。

ctx.textAlign = "属性值";
属性值说明
start文本在指定横坐标开始
end文本在指定横坐标结束
left文本左对齐(类似start)
rightt文本右对齐(类似end)
center文本中心在指定横坐标

start和end与文字阅读方向有关,从左到右阅读,start、end分别对应左右;从右到左阅读,start、end分别对应右左。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <meta charset="utf-8" />
    <script type="text/javascript">
        function $$(id) {
            return document.getElementById(id);
        }
        window.onload = function () {
            var cnv = $$("canvas");
            var cxt = cnv.getContext("2d");

            //在横坐标150处绘制一条竖线
            cxt.moveTo(150, 0);
            cxt.lineTo(150, 200);
            cxt.strokeStyle = "purple";
            cxt.stroke();

            cxt.font = "15px Arial";

            cxt.textAlign = "start";
            cxt.fillText("textAlign取值为start", 150, 30);
            
            cxt.textAlign = "left";
            cxt.fillText("textAlign取值为left", 150, 60);
            
            cxt.textAlign = "end";
            cxt.fillText("textAlign取值为end", 150, 90);
            
            cxt.textAlign = "right";
            cxt.fillText("textAlign取值为right", 150, 120);
            
            cxt.textAlign = "center";
            cxt.fillText("textAlign取值为center", 150, 150);
        }
    </script>
</head>
<body>
    <canvas id="canvas" width="300" height="200" style="border:1px dashed gray;"></canvas>
</body>
</html>

5.3.3 textBaseline属性

定义文本垂直方向的对齐方式。

ctx.textBaseline= "属性值";
属性值说明
alphabetic文本基线是普通英文字母的基线
top文本基线是em方框的顶端
middle文本基线是em方框的中心
bottom文本基线是em方框的底端

其他属性hanging、ideographic等。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <meta charset="utf-8" />
    <script type="text/javascript">
        function $$(id) {
            return document.getElementById(id);
        }
        window.onload = function () {
            var cnv = $$("canvas");
            var cxt = cnv.getContext("2d");

            //在纵坐标100处绘制一条横线
            cxt.moveTo(0, 100);
            cxt.lineTo(300, 100);
            cxt.strokeStyle = "purple";
            cxt.stroke();

            cxt.font = "20px Arial";
            
            cxt.textBaseline = "alphabetic";
            cxt.fillText("alphabetic", 10, 100);
            
            cxt.textBaseline = "top";
            cxt.fillText("top", 110, 100);
            
            cxt.textBaseline = "middle";
            cxt.fillText("middle", 160, 100);
            
            cxt.textBaseline = "bottom";
            cxt.fillText("bottom", 230, 100);
        }
    </script>
</head>
<body>
    <canvas id="canvas" width="300" height="200" style="border:1px dashed gray;"></canvas>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1 基础知识 1 1.1 canvas元素 1 1.1.1 canvas元素的大小与绘图表面的大小 4 1.1.2 canvas元素的api 5 1.2 canvas的绘图环境 6 1.2.1 2d绘图环境 6 1.2.2 canvas状态的保存与恢复 8 1.3 本书程序清单的规范格式 9 1.4 开始学习html5 10 1.4.1 规范 10 1.4.2 浏览器 11 1.4.3 控制台与调试器 11 1.4.4 性能 13 1.5 基本的绘制操作 15 1.6 事件处理 18 1.6.1 鼠标事件 18 1.6.2 键盘事件 22 .1.6.3 触摸事件 23 1.7 绘制表面的保存与恢复 23 1.8 在canvas中使用html元素 25 1.9 打印canvas的内容 32 1.10 离屏canvas 35 1.11 基础数学知识简介 37 1.11.1 求解代数方程 37 1.11.2 三角函数 38 1.11.3 向量运算 39 1.11.4 根据计量单位来推导等式 42 1.12 总结 44 第2 绘制 45 2.1 坐标系统 46 2.2 canvas的绘制模型 47 2.3 矩形的绘制 48 2.4 颜色与透明度 50 2 .5 渐变色与图案 52 2.5.1 渐变色 52 2.5.2 图案 54 2.6 阴影 57 2.7 路径、描边与填充 60 2.7.1 路径与子路径 63 2.7.2 剪纸效果 64 2.8 线段 69 2.8.1 线段与像素边界 70 2.8.2 网格的绘制 71 2.8.3 坐标轴的绘制 72 2.8.4 橡皮筋式的线条绘制 74 2.8.5 虚线的绘制 79 2.8.6 通过扩展canvasrenderingcontext2d来绘制虚线 80 2.8.7 线段端点与连接点的绘制 81 2.9 圆弧与圆形的绘制 83 2.9.1 arc()方法的用法 83 2.9.2 以橡皮筋式辅助线来协助用户画圆 85 2.9.3 arcto()方法的用法 86 2.9.4 刻度仪表盘的绘制 88 2.10 贝塞尔曲线 93 2.10.1 二次方贝塞尔曲线 93 2.10.2 三次方贝塞尔曲线 95 2.11 多边形的绘制 97 2.12 高级路径操作 102 2.12.1 拖动多边形对象 102 2.12.2 编辑贝塞尔曲线 107 2.12.3 自动滚动网页,使某段路径所对应的元素显示在视窗中 115 2.13 坐标变换 116 2.13.1 坐标系的平移、缩放与旋转 116 2.13.2 自定义的坐标变换 119 2.14 图像合成 123 2.15 剪辑区域 128 2.15.1 通过剪辑区域来擦除图像 128 2.15.2 利用剪辑区域来制作伸缩式动画 133 2.16 总结 135 第3 文本 137 3.1 文本的描边与填充 137 3.2 设置字型属性 141 3.3 文本的定位 144 3.3.1 水平与垂直定位 144 3.3.2 将文本居中 146 3.3.3 文本的度量 147 3.3.4 绘制坐标轴旁边的文本标签 148 3.3.5 绘制数值仪表盘周围的文本标签 151 3.3.6 在圆弧周围绘制文本 152 3.4 实现文本编辑控件 154 3.4.1 指示文本输入位置的光标 154 3.4.2 在canvas中编辑文本 159 3.4.3 文本段的编辑 163 3.5 总结 174 第4 图像与视频 175 4.1 图像的绘制 176 4.1.1 在canvas之中绘制图像 176 4.1.2 drawimage()方法的用法 177 4.2 图像的缩放 179 4.3 将一个canvas绘制到另一个canvas之中 183 4.4 离屏canvas 186 4.5 操作图像的像素 189 4.5.1 获取图像数据 189 4.5.2 修改图像数据 195 4.6 结合剪辑区域来绘制图像 208 4.7 以图像制作动画 211 4.8 图像绘制的安全问题 216 4.9 性能 216 4.9.1 对比drawimage(htmlimage)、drawimage(htmlcanvas)与putimagedata()的绘图效率 217 4.9.2 在canvas中绘制另一个canvas与绘制普通图像之间的对比;在绘制时缩放图像与保持原样之间的对比 217 4.9.3 遍历图像数据 218 4.10 放大镜 222 4.10.1 使用离屏canvas 224 4.10.2 接受用户从文件系统中拖放进来的图像 225 4.11 视频处理 227 4.11.1 视频格式 227 4.11.2 在canvas中播放视频 229 4.11.3 视频处理 230 4.12 总结 234 第5 动画 235 5.1 动画循环 235 5.1.1 通过requestanimationframe()方法让浏览器来自行决定帧速率 237 5.1.2 internet explorer浏览器对requestanimationframe()功能的实现 241 5.1.3 可移植于各浏览器平台的动画循环逻辑 241 5.2 帧速率的计算 248 5.3 以不同的帧速率来执行各种任务 249 5.4 恢复动画背景 250 5.4.1 利用剪辑区域来处理动画背景 250 5.4.2 利用图块复制技术来处理动画背景 252 5.5 利用双缓冲技术绘制动画 253 5.6 基于时间的运动 254 5.7 背景的滚动 257 5.8 视差动画 261 5.9 用户手势 264 5.10 定时动画 266 5.10.1 秒表 266 5.10.2 动画计时器 269 5.11 动画制作的最佳指导原则 270 5.12 总结 271 第6 精灵 272 6.1 精灵概述 273 6.2 精灵绘制器 275 6.2.1 描边与填充绘制器 275 6.2.2 图像绘制器 279 6.2.3 精灵表绘制器 281 6.3 精灵对象的行为 284 6.3.1 将多个行为组合起来 285 6.3.2 限时触发的行为 287 6.4 精灵动画制作器 289 6.5 基于精灵的动画循环 293 6.6 总结 294 第7 物理效果 295 7.1 重力 295 7.1.1 物体的下落 296 7.1.2 抛射体弹道运动 298 7.1.3 钟摆运动 307 7.2 时间轴扭曲 311 7.3 时间轴扭曲函数 315 7.4 时间轴扭曲运动 317 7.4.1 没有加速度的线性运动 319 7.4.2 逐渐加速的缓入运动 320 7.4.3 逐渐减速的缓出运动 322 7.4.4 缓入缓出运动 323 7.4.5 弹簧运动与弹跳运动 324 7.5 以扭曲后的帧速率播放动画 326 7.6 总结 332 第8 碰撞检测 333 8.1 外接图形判别法 333 8.1.1 外接矩形判别法 333 8.1.2 外接圆判别法 334 8.2 碰到墙壁即被弹回的小球 336 8.3 光线投射法 337 8.4 分离轴定理(sat)与最小平移向量(mtv) 340 8.4.1 使用分割轴定理检测碰撞 340 8.4.2 根据最小平移向量应对碰撞 362 8.5 总结 373 第9 游戏开发 374 9.1 游戏引擎 374 9.1.1 游戏循环 376 9.1.2 加载图像 382 9.1.3 同时播放多个声音 384 9.1.4 键盘事件 385 9.1.5 高分榜 386 9.1.6 游戏引擎源代码 387 9.2 游戏原型 395 9.2.1 游戏原型程序的html代码 396 9.2.2 原型程序的游戏循环 399 9.2.3 游戏原型程序的加载画面 400 9.2.4 暂停画面 402 9.2.5 按键监听器 404 9.2.6 游戏结束及高分榜 404 9.3 弹珠台游戏 407 9.3.1 游戏循环弹珠 408 9.3.2 弹珠精灵 410 9.3.3 重力与摩擦力 411 9.3.4 弹板的移动 412 9.3.5 处理键盘事件 413 9.3.6 碰撞检测 416 9.4 总结 425 第10 自定义控件 426 10.1 圆角矩形控件 427 10.2 进度条控件 433 10.3 滑动条控件 437 10.4 图像查看器控件 446 10.5 总结 454 第11 移动平台开发 455 11.1 移动设备的视窗 456 11.2 媒体特征查询技术 461 11.2.1 媒体特征查询与css 461 11.2.2 用javascript程序应对媒体特征的变化 462 11.3 触摸事件 464 11.3.1 touchevent对象 464 11.3.2 touchlist对象 465 11.3.3 touch对象 466 11.3.4 同时支持触摸事件与鼠标事件 466 11.3.5 手指缩放 468 11.4 ios5 469 11.4.1 应用程序图标及启动画面 469 11.4.2 利用媒体特征查询技术设置ios5系统的应用程序图标及启动画面 470 11.4.3 以不带浏览器饰件的全屏模式运行应用程序 471 11.4.4 应用程序的状态栏 471 11.5 虚拟键盘 472 11.6 总结 485
第一部分 准备工作篇 第1 准备工作 / 2 1.1 html5介绍 / 2 1.1.1 什么是html5 / 2 1.1.2 html5的新特性 / 2 1.2 canvas简介 / 5 1.2.1 canvas标签的历史 / 5 1.2.2 canvas的定义和用法 / 6 1.2.3 如何使用canvas来绘图 / 6 1.2.4 canvas的限制 / 7 1.3 开发与运行环境的准备 / 7 1.3.1 浏览器的支持 / 7 1.3.2 准备一个本地的服务器 / 8 1.4 开发工具的选择 / 8 1.5 测试与上传代码 / 12 1.6 javascript中的面向对象 / 13 1.6.1 类 / 13 1.6.2 静态类 / 16 .1.6.3 继承 / 16 1.7 小结 / 17 第二部分 基础知识篇 第2 canvas基本功能 / 20 2.1 绘制基本图形 / 20 2.1.1 画线 / 20 2.1.2 画矩形 / 22 2.1.3 画圆 / 24 2.1.4 画圆角矩形 / 26 2.1.5 擦除canvas画板 / 27 2.2 绘制复杂图形 / 28 2.2.1 画曲线 / 28 2.2.2 利用clip在指定区域绘 图 / 30 2.2.3 绘制自定义图形 / 31 2.3 绘制文本 / 32 2.3.1 绘制文字 / 32 2.3.2 文字设置 / 33 2.3.3 文字的对齐方式 / 38 2.4 图片操作 / 41 2.4.1 利用drawimage绘制图片 / 41 2.4.2 利用getimagedata和putimagedata绘制图片 / 45 2.4.3 利用createimagedata新建像素 / 47 2.5 小结 / 49 第3 canvas高级功能 / 50 3.1 变形 / 50 3.1.1 放大与缩小 / 50 3.1.2 平移 / 53 3.1.3 旋转 / 54 3.1.4 利用transform矩阵实现多样化的变形 / 56 3.2 图形的渲染 / 65 3.2.1 绘制颜色渐变效果的图形 / 65 3.2.2 颜色合成之globalcompositeoperation属性 / 67 3.2.3 颜色反转 / 69 3.2.4 灰度控制 / 70 3.2.5 阴影效果 / 71 3.3 自定义画板 / 72 3.3.1 画板的建立 / 72 3.3.2 canvas画布的导出功能 / 79 3.4 小结 / 81 第4 lufylegend开源库件 / 82 4.1 lufylegend库件简介 / 82 4.1.1 工作原理 / 82 4.1.2 库件使用流程 / 83 4.2 图片的加载与显示 / 84 4.2.1 图片显示举例 / 84 4.2.2 lbitmapdata对象 / 86 4.2.3 lbitmap对象 / 87 4.3 层的概念 / 88 4.4 使用lgraphics对象绘图 / 90 4.4.1 绘制矩形 / 90 4.4.2 绘制圆 / 91 4.4.3 绘制任意多边形 / 92 4.4.4 使用canvas的原始绘图函数进行绘图 / 93 4.4.5 使用lsprite对象进行绘图 / 94 4.4.6 使用lgraphics对象绘制图片 / 95 4.5 文本 / 101 4.5.1 文本属性 / 101 4.5.2 输入框 / 102 4.6 事件 / 103 4.6.1 鼠标事件 / 103 4.6.2 循环事件 / 104 4.6.3 键盘事件 / 105 4.7 按钮 / 106 4.8 动画 / 108 4.9 小结 / 113 第三部分 开发实战篇 第5 从简单做起—“石头剪子布”游戏 / 116 5.1 游戏分析 / 116 5.2 必要的javascript知识 / 117 5.2.1 随机数 / 117 5.2.2 条件分支 / 117 5.3 分层实现 / 117 5.4 各个层的基本功能 / 119 5.4.1 基本画面显示 / 119 5.4.2 结果层的显示 / 126 5.4.3 控制层的显示 / 127 5.5 出拳 / 129 5.6 结果判定 / 131 5.7 小结 / 137 第6 开发“俄罗斯方块”游戏 / 138 6.1 游戏分析 / 138 6.2 必要的javascript知识 / 138 6.3 游戏标题画面显示 / 139 6.4 向游戏里添加方块 / 141 6.5 控制方块的移动 / 152 6.5.1 键盘事件 / 152 6.5.2 触屏事件 / 155 6.6 方块的消除和得分的显示 / 157 6.7 小结 / 160 第7 开发“是男人就下一百层”游戏 / 161 7.1 游戏分析 / 161 7.2 游戏标题画面显示 / 161 7.3 读取图片与背景显示 / 162 7.4 添加一个静止的地板 / 167 7.5 添加游戏主角 / 170 7.5.1 让游戏主角出现在画面上 / 170 7.5.2 通过键盘事件来控制游戏主角的移动 / 177 7.5.3 通过触屏事件来控制游戏主角的移动 / 178 7.6 添加多种多样的地板 / 179 7.6.1 会消失的地板 / 179 7.6.2 带刺的地板 / 181 7.6.3 带有弹性的地板 / 182 7.6.4 向左和向右移动的地板 / 184 7.7 游戏数据的显示 / 187 7.8 游戏结束与重开 / 190 7.9 小结 / 192 第8 开发射击类游戏 / 193 8.1 游戏分析 / 193 8.2 添加一架可控飞机 / 194 8.2.1 添加一个飞机类 / 194 8.2.2 可控飞机类 / 197 8.3 为飞机添加多样化的子弹 / 203 8.3.1 建立一个子弹类 / 203 8.3.2 单发子弹 / 205 8.3.3 多发子弹 / 207 8.3.4 环形子弹 / 208 8.3.5 反向子弹 / 209 8.4 添加敌机 / 209 8.4.1 建立一个敌机类 / 210 8.4.2 建立一个敌机boss类 / 214 8.5 碰撞检测 / 217 8.5.1 飞机与子弹的碰撞 / 217 8.5.2 我机与敌机的碰撞 / 220 8.6 子弹的变更 / 221 8.6.1 建立一个弹药类 / 222 8.6.2 弹药与我机的碰撞 / 223 8.7 飞机生命值的显示 / 225 8.8 游戏胜利与失败判定 / 226 8.9 小结 / 228 第9 开发物理游戏 / 229 9.1 box2d简介 / 229 9.2 box2dweb在lufylegend库件中的使用 / 229 9.3 创建各种各样的物体 / 234 9.3.1 矩形物体 / 234 9.3.2 圆形物体 / 237 9.3.3 多边形物体 / 239 9.4 响应鼠标拖拽物体 / 242 9.5 关节(joint) / 243 9.5.1 距离关节(b2distancejointdef) / 243 9.5.2 旋转关节(b2revolutejointdef) / 245 9.5.3 滑轮关节(b2pulleyjointdef) / 247 9.5.4 移动关节(b2prismaticjoint) / 248 9.5.5 齿轮关节(b2gearjoint) / 250 9.5.6 悬挂关节(b2linejoint) / 252 9.5.7 焊接关节(b2weldjoint) / 253 9.5.8 鼠标关节(mouse joint) / 254 9.6 力 / 254 9.7 碰撞检测 / 256 9.8 镜头移动 / 260 9.9 做一个简单的物理游戏 / 263 9.10 小结 / 267 第10 开发网络游戏 / 268 10.1 http通信 / 268 10.1.1 如何实现http通信 / 268 10.1.2 http通信的弊端 / 275 10.2 socket通信 / 275 10.2.1 区分socket通信和http通信 / 276 10.2.2 服务器端 / 276 10.2.3 客户端 / 281 10.3 利用websocket实现简单的聊天室 / 283 10.4 做一款多人在线的坦克大战 / 293 10.4.1 服务器 / 293 10.4.2 客户端 / 293 10.5 小结 / 307 第四部分 技能提高篇 第11 提高效率的分析 / 310 11.1 绘图时使用小数的影响 / 310 11.2 drawimage和putimagedata的效率比较 / 311 11.3 区域更新和图片大小对绘图效率的影响 / 311 11.4 图片格式对绘图效率的影响 / 313 11.5 优化代码以提高整体效率 / 314 11.5.1 使用位运算 / 314 11.5.2 少用math静态类 / 316 11.5.3 优化算法 / 319 11.6 小结 / 322 · · · · · · (收起)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值