http://www.cocoachina.com/bbs/read.php?tid=458895&page=1&toread=1#tpc
New: 教程司令部已经更新了教程 往后不再使用链式的教程结构
承接上一篇帖子的教程 “CocosCreator + socketIO简易教程”
我们继续在CocosCreator + SocketIO 的基础上 添加MySQL数据库驱动
这次的教程为实现一个简易的登录验证
我们从已经安装了CocosCreator 懂得建立HelloWorld项目
已经实现“<简易教程之你连我干嘛>” 完全不知道Mysql是啥 的前提开始讲
首先下载并安装MySQL (windows) http://pan.baidu.com/s/1bnWzsOf,1
因为我电脑里面已经安装了 就不再演示安装了 借用别人的图来示范一下 不大一样 不过差不多
这里注意几点 首先是安装方式选择custom 然后下面能改路径的都改了 不需要装在系统盘
我没有特殊提起的按默认处理吧
然后选择继续配置
在编码选择的时候 切记要选择UTF-8
后面还有一个登陆密码的选择 在这里作为学习用 和我后面的代码保持一样吧 我设的密码是: “123456”
我不大记得是不是需要设置账号名了 如果需要的话设置为 “root” 总之不是什么很困难的事
然后就一路下一步就行了
完成后mysql就安装完成了
我的可能没有设置路径吧 cmd下输入mysql是没有反应的 不过我也不打算在黑框框下敲SQL
下面我们用 sqlyog 来操作数据库 它是一个可视化操作数据库的工具
首先下载并安装吧 记得要先打开压缩文件找到里面的密码 然后再解压 http://pan.baidu.com/s/1eRczad8,1
这个是绿色免安装的
sn.txt 里面是等会注册软件的账号和密码
这个是安装目录
验证完成后 就会进入这个界面 如果安装没有意外的话 账号为 root 密码为 123456 端口为3306(默认)
然后点连接 将进入主界面 后面关于数据库的部分 我们边向完成登录验证的目标推进 一边学习吧
对着root@localhost 鼠标右键 -> 创建数据库
数据库名字我们处于学习目的 和我的代码一致吧 写为"db_user" 前面的db为database的缩写
后面的default 我们就不动了 之前安装时选择UTF-8编码就是为这个服务的
点击创建 就会在左侧显示新的数据库了
然后鼠标指向db_user下的 table 鼠标右键 ->创建表 进入表创建界面
因为我们要做的是登录验证 那么我们就只留下两项 用户名和密码
(userName varchar 20 pk not null | password varchar 20 )
varchar为字符串类型 20为长度 pk not null 为主键 主键就是唯一标示一条记录的标识
然后创建表 表名 填写为 “t_user” t为table的缩写 然后就选择不继续创建表了
然后我们就写一条测试数据吧 先切换到数据表界面
用户名和密码分别写为 “linhaiwei123” “asd520” 完了之后可以自己去改来试一下 现在先这么写吧 你可以填多几条测试数据 效果会好一点 这里不赘述 写完点击Refresh 保存
好了 SQLyog可以关掉了 关于数据库部分的搭建和准备就先告一段落了
现在我们用Node.js来访问数据库吧
首先下载和安装 mysql驱动模块
在node.js安装目录下(有node_module node.exe 的目录下) 按住shift + 鼠标右键 -> 在此处打开命令行
输入 npm install --save mysql
稍等几秒后就会安装完成
然后开始写一个node.js访问数据库的测试代码吧
然后运行一下看看吧
我们已经连接到数据库了
但是呢 这个样子的连接会有一点点问题 我们连接一次 就关掉了 有点浪费 我们写一个连接池吧 很简单的 就改两句话
然后再运行一下吧
好吧其实没什么区别 然后还有一点点的问题 如果我们要做登录验证 一个简单思路就是 在表里面查 有没有用户名和密码能匹配上 匹配上能登录成功 匹配不上就登录失败
那么就需要将用户名和密码嵌入到查询语句里面 怎么嵌入呢 一种就是用字符串的拼接 不过太粗鲁了 我们用点优雅的方式
比如这个样子 sql中需要嵌入的项 比如用户名 密码 用?代替 然后需要嵌入的项 单独用数组来存
然后再运行一下吧 (停止node.js的快捷键是 ctrl + c)
好了 至此我们已经具备使用node.js连接数据库和查询数据库记录的能力了
请将node.js连接数据库的内容先告一段落
我们下面学习如何在cocosCreator 和 node.js之间传输多条数据 (在上一篇教程中 我们学习了单条数据的传送 我们这次要一次传输多条数据)
首先是cocosCreator中 myapp.js onload 下
这个node.js 代码
运行效果如图
这里不好的地方呢 就是 如果我要再传一份一模一样的数据 就要再敲一遍了 我们不妨先将要传输的数据先保存一遍 保存在user2中
另外 我们可能会面对 node.js根本不知道传过来的数据有什么 我不知道里面有什么键 我只是单纯的想要你所知道的都告诉我
于是我们的serverTwo.js可以这样写 通过for in循环获取键 并通过键获取值
然后运行效果如图
但是这样还有一个缺点 user对象直接就在onload里面创建了 如果有多个js文件都要用 那就要每个都敲一遍了 我们不妨从外部导入构造函数 并创建一个新的user实例 命名为user3
在script文件夹下 创建一个javascript 重命名为user.js
然后写下user的构造函数 用module.exports = User; 使得构造函数可以供外面访问 这里还有另外一个创建公共接口的方式为exports = func() 我的理解是 如果需要向外输出一个对象 可以用module.exports 而如果只是需要调用一个函数 用exports就可以了
后台代码不变 我们运行一下
到这个 我们已经具备了CocosCreator和Node.js之间自由传输数据的能力
回顾一下 我们已经具备了一下两种能力
- node.js <=> mysql
- CocosCreator <=> node.js
现在我们要做一个组合 通过写一个登录验证
- CocosCreator <=> node.js <=> mysql
其实 CocosCreator端 和mysql端 不需要做很大的变动
关键是访问前台的node.js 和访问数据库的node.js如何结合起来
我们一步一步来吧 前端代码不需要修改 就修改用户名和密码就行
然后呢 我们要改一下node.js
然后呢 我们对访问mysql的node.js 做一点点修改 以适应访问CocosCreator端node.js的require()请求
好了 我们再修改一下包路径配置 在NODE_PATH最前面 添加.;(句号+分号) 表示可以从当前目录下找包 和java配置环境的道理一样
我们将logindao.js和serverFinal.js放在同一目录下 在DOS框下运行node serverFinal.js
然后在CocosCreator中点击运行
然后我们修改myapp.js onload 中 用户名为linhawei124 重启服务器 再次运行
到这里我们已经完成简易的登录验证 也具备了基本的CocosCreator+SocketIO+MYSQL的交互能力
注意到 我在logindao.js中 中文的传输用的是unicode 而不是直接用中文 因为直接用中文会乱码
这里推荐一个网址 可以在线进行中文转unicode http://tool.chinaz.com/Tools/Unicode.aspx
在上方输入中文 点击右中间 中文转unicode 然后复制下面的unicode码 取代原来代码中的中文就可以了
然后源码在这里
http://pan.baidu.com/s/1i3ZAYMx,1
本来的计划是依据输入框 动态地修改用户名和密码 并在此基础上继续完成一个群聊的功能 再根据tilemap完成一个在线社区吧
但是tilemap 和 输入框 的功能都需要等到3月初才能方出来 那就到时候再继续完成吧
后续会推出关于帧动画 动画响应的教程
本次教程仅仅涵盖了需要和常用的内容 其他内容请在需要时自行查询 后续也可能会补全这一部分内容
http://www.cocoachina.com/bbs/read.php?tid=458895&page=1&toread=1#tpc