从今天起开始捣鼓小程序了2018-12-17   10:02:15

跟着教程做了第一个入门实例有兴趣的朋友可以看看:

猜拳游戏布局

程序达到的效果

猜拳游戏的布局是纵向显示了三个组件:文本组件(text)、图像组件(image)和按钮组件(button)。在创建小程序工程时,默认建立了两个页面:index 和 logs。我们不需要管 logs,在这个例子中只修改和 index 页面相关的文件,index 是小程序第一个显示的页面,其中 index.wxml 文件是 index 页面的布局文件.

修改index.wxml文件

1 <!--index.wxml-->
2 <view class='container'>
3   <text class='finger_guess'>猜拳小游戏</text>
4   <view class='userinfo'>
5   <image class='userinfo-avater' src='{{imagePath}}' background-size='cover'/>
6   <button bindtap='guess'>{{title}}</button>
7   </view>
8 </view>

在这段代码中,image 和 button 组件的内容都需要动态改变,所以 image 组件的 src 属性和 button 组件的文本值(夹在 <button> 和 </button> 之间的部分)都分别于一个变量绑定,这是小程序的一个重要特性(和 React Native 完全相同)。在改变组件的属性值时,并不需要直接获取该组件的实例,而只需将该属性与某个同类型的变量绑定,一旦该变量的值改变,属性值也就会随之改变了,绑定变量的格式是“{{变量名}}”。

接下来需要调整一下样式文件index.wxss

/**index.wxss**/
.userinfo {display: flex;flex-direction: column;align-items: center;
}.userinfo-avatar {width: 500rpx;height: 500rpx;margin: 40rpx;/* border-radius: 50%; */
}.userinfo-nickname {color: #aaa;
}.usermotto {margin-top: 200px;
}.finger_guessing {color: #F00;font-size: 30px;margin-top: 20px;} 

.container {height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: space-between;padding: 50rpx 0;box-sizing: border-box;
} 

当然,现在可能仍然无法显示图像,因为 imagePath 变量还没有设置,而且图像还没有放到工程目录。现在读者可以到网上找三张图片,分别是剪子、石头和布,当然,也可以用本例提供的图像,并在小程序工程根目录建立一个 images 目录,将三个图片文件放到该目录中。

控制剪子、石头、布的快速切换

猜拳游戏的核心就是快速切换剪子、石头、布三个图像,当单击“停止”按钮后,会停到其中一个图像上,这里涉及到如下两个动作:

  • 用定时器快速切换图像。
  • 图像下方的按钮,当一开始单击时,文本变成了“停止”,当再次单击该按钮后,按钮文本又变成了“开始”,也就是说,一个按钮同时负责开始和停止图像快速切换两个动作。

控制图像快速切换和按钮文本变化两个动作的代码都要写在 index.js 文件中。首先将这三个图像文件名存储在一个全局的数组中,并使用定时器快速从这个数组中依次循环获取图像文件名,并将该文件名指定的图像显示到 image 组件中,修改按钮的文本只需要修改 title 变量即可。

这里涉及到两个主要变量:imagePath 和 title,这两个都定义在 data 对象中,单击按钮会执行 guess 函数(在 index.wxml 文件中使用 bindtap 属性指定按钮的单击事件函数名),该函数也需要在 index.js 中编写,完整的实现代码如下:

//index.js
//获取应用实例
var app = getApp()
//  在数组中存在三个图像文件名
var imagePaths = ['../../images/石头.png', '../../images/剪刀.png', '../../images/布.png'];
//  当前图像的索引
var imageIndex = 0;Page({data: {imagePath: imagePaths[0],  //  用于修改image组件显示图像的变量title: '开始',                //  用于改变按钮文本的变量isRunning: false            //  该变量为true,表示图像正在快速切换
  },//  定时器要执行的函数change: function (e) {//  更改当前图像索引,当大于最大索引时,重新设为第一个索引值(已达到循环显示图像的目的)imageIndex=(imageIndex+1)%3;//  修改image组件要显示的图像(改变imagePath变量的值)this.setData({imagePath: imagePaths[imageIndex]})},//  点击按钮要执行的函数guess: function (e) {//  获取isRunning变量的值let isRunning = this.data.isRunning;// 根据是否正在快速切换图像,决定如何修改按钮文本,以及是开启定时器,还是移除定时器if (!isRunning) {this.setData({title: '停止',isRunning: true});//  开启定时器(没100毫秒调用一次change函数)this.timer = setInterval((function () {this.change()}).bind(this), 100);}else {this.setData({title: '开始',isRunning: false});//  移除定时器this.timer && clearInterval(this.timer);}}
})

转载于:https://www.cnblogs.com/roseAT/p/10129798.html

微信小程序开发入门学习(1):石头剪刀布小游戏相关推荐

  1. 微信小程序开发入门与实战 ②(小程序与前端开发的区别)

    @作者 : SYFStrive @博客首页 : HomePage

  2. SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目

    JavaDog Chat v1.0.0 基于SpringBoot+uniapp简单通讯聊天软件

  3. 小程序onload_微信小程序开发入门之共享账本(十四)

    微信小程序开发入门之共享账本(十四) (备注:微信小程序的wxml文件相当于HTML文件,wxss文件相当于CSS文件,js文件就是JavaScript文件,数据库为NoSQL数据库,数据库脚本语言也 ...

  4. 从零开始学前端第十七讲--微信小程序开发入门

    微信小程序开发入门 主讲人介绍 沁修,葡萄藤技术总监 项目经验丰富,擅长H5移动项目开发. 专注技术选型.底层开发.最佳代码实践规范总结 直播录屏版 https://v.qq.com/x/page/n ...

  5. 微信小程序开发—小程序开发入门

    我参加CSDN博客之星评选啦,感谢大家前往投票支持! 投票地址:http://blog.csdn.net/vote/list.html?keyword=anda0109#search 本篇将为大家详细 ...

  6. 微信小程序开发入门(连载)—— 认识微信小程序

    从今天开始,为大家开一门连载课程 --<微信小程序开发入门>. 2011 年,腾讯公司新的即时通讯社交软件微信正式上线,凭借其新颖的设计风格和良好的使用体验,微信很快就获得了大量的用户.据 ...

  7. 微信小程序开发入门要学哪些内容

    微信小程序开发入门要学哪些内容?微信小程序需要学习的知识点:注册登录.开发工具安装.配置.样式.组件.微信小程序数据渲染.网络请求API.获取用户信息API等,了解开发者工具.原生框架.模板语法.组件 ...

  8. 《微信小程序开发入门精要》——导读

    本节书摘来自异步社区<微信小程序开发入门精要>一书中的导读,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 第1章 微信小程序入门 第1章第1节 ...

  9. 微信小程序开发:学习笔记[8]——页面跳转及传参

    微信小程序开发:学习笔记[8]--页面跳转及传参 页面跳转 一个小程序拥有多个页面,我们可以通过wx.navigateTo推入一个新的页面.在首页使用2次wx.navigateTo后,页面层级会有三层 ...

最新文章

  1. 云计算的服务模型 SaaS PaaS IaaS
  2. LeetCode Count Numbers with Unique Digits(计数问题)
  3. oracle表的操作简述
  4. PostgreSQL与MySQL的区别收集
  5. vs2008 sp1安装时候系统盘空间不够问题,解决方式
  6. 软件工程中哲理反思 - 古文学 -师说
  7. CF1219G Harvester 题解
  8. scratch聪明的小猫 电子学会图形化编程scratch等级考试四级真题和答案解析2021-12
  9. 卸载Visual Studio 2015并安装Visual Studio 2019
  10. 电子行业测试软件,CAM软件技术在电子行业的应用测试验证
  11. 多可文档管理系统,我的文档是什么?
  12. java实现中英文按拼音排序
  13. 性别歧义代词(GAP) 2019年 NLP 研讨会性别偏见问题共同任务--阅读笔记
  14. 微信小程序图片转发到微信
  15. 第九章:MATLAB:程序设计(一)M文件
  16. 关于oracle账户被锁定的解决办法
  17. 高性能MySQL之 Chapter13
  18. RYU+Mininet的SDN架构-设计校园网络(三)
  19. 多线程、机械硬盘、固态硬盘、内存映射相关资料
  20. -bash: ./start.sh: /bin/sh^M: bad interpreter: No such file or directory 错误解决方案

热门文章

  1. 将对象转为需要的数组形式
  2. 微波炉定时c语言程序,美的微波炉定时器的检测
  3. vxWorks/BootROM Imageq启动顺序详解
  4. java大话西游_大话西游之翻云覆雨
  5. GPS接收器控件TGPS下载及功能介绍
  6. 无线安全需要了解的芯片选型、扫描器使用知识
  7. Mvc实现简单的登录
  8. 学习RHCSA的第二天
  9. android水果界面设计,一组色彩鲜艳的水果电商APP界面设计鉴赏
  10. finBERT-金融英文情感分析运行介绍