
<view class="container">
<!--画布区域-->
<view class="canvas_area">
<!--注意:同一页面中的 canvas-id 不可重复,如果使用一个已经出现过的 canvas-id,该 canvas 标签对应的画布将被隐藏并不再正常工作-->
<canvas canvas-id="myCanvas" class="myCanvas"
disable-scroll="false"
bindtouchstart="touchStart"
bindtouchmove="touchMove"
bindtouchend="touchEnd">
</canvas>
</view>
<!--画布工具区域-->
<view class="canvas_tools">
<view class="box box1" bindtap="penSelect" data-param="5"></view>
<view class="box box2" bindtap="penSelect" data-param="15"></view>
<view class="box box3" bindtap="colorSelect" data-param="#cc0033"></view>
<view class="box box4" bindtap="colorSelect" data-param="#ff9900"></view>
<view class="box box5" bindtap="clearCanvas"></view>
</view>
</view>
手指滑动代码
//手指触摸动作开始
touchStart: function (e) {
//得到触摸点的坐标
thisstartX = echangedTouches[0]x
thisstartY = echangedTouches[0]y
thiscontext = wxcreateContext()
if(thisisClear){ //判断是否启用的橡皮擦功能 ture表示清除 false表示画画
thiscontextsetStrokeStyle('#F8F8F8') //设置线条样式 此处设置为画布的背景颜色 橡皮擦原理就是:利用擦过的地方被填充为画布的背景颜色一致 从而达到橡皮擦的效果
thiscontextsetLineCap('round') //设置线条端点的样式
thiscontextsetLineJoin('round') //设置两线相交处的样式
thiscontextsetLineWidth(20) //设置线条宽度
thiscontextsave(); //保存当前坐标轴的缩放、旋转、平移信息
thiscontextbeginPath() //开始一个路径
thiscontextarc(thisstartX,thisstartY,5,0,2MathPI,true); //添加一个弧形路径到当前路径,顺时针绘制 这里总共画了360度 也就是一个圆形
thiscontextfill(); //对当前路径进行填充
thiscontextrestore(); //恢复之前保存过的坐标轴的缩放、旋转、平移信息
}else{
thiscontextsetStrokeStyle(thisdatacolor)
thiscontextsetLineWidth(thisdatapen)
thiscontextsetLineCap('round') // 让线条圆润
thiscontextbeginPath()
}
},
//手指触摸后移动
touchMove: function (e) {
var startX1 = echangedTouches[0]x
var startY1 = echangedTouches[0]y
if(thisisClear){ //判断是否启用的橡皮擦功能 ture表示清除 false表示画画
thiscontextsave(); //保存当前坐标轴的缩放、旋转、平移信息
thiscontextmoveTo(thisstartX,thisstartY); //把路径移动到画布中的指定点,但不创建线条
thiscontextlineTo(startX1,startY1); //添加一个新点,然后在画布中创建从该点到最后指定点的线条
thiscontextstroke(); //对当前路径进行描边
thiscontextrestore() //恢复之前保存过的坐标轴的缩放、旋转、平移信息
thisstartX = startX1;
thisstartY = startY1;
}else{
thiscontextmoveTo(thisstartX, thisstartY)
thiscontextlineTo(startX1, startY1)
thiscontextstroke()
thisstartX = startX1;
thisstartY = startY1;
}
//只是一个记录方法调用的容器,用于生成记录绘制行为的actions数组。context跟<canvas/>不存在对应关系,一个context生成画布的绘制动作数组可以应用于多个<canvas/>
wxdrawCanvas({
canvasId: 'myCanvas',
reserve: true,
actions: thiscontextgetActions() // 获取绘图动作数组
})
}
Python程序开发之简单小程序实例
(11)小 游戏 -跳动的小球
一、项目功能
二、项目分析
根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。在控制小球的类中,我们还需要考虑当小球下降时,碰到挡板时的位置判断。
三、程序源代码
源码部分截图:
源码:
#!/usr/bin/python36
# -- coding: GBK --
#导入相应模块
from tkinter import
import random
import time
#自定义小球的类 Ball
class Ball:
# 初始化
def __init__(self,canvas,paddle,color):
#传递画布值
selfcanvas=canvas
#传递挡板值
selfpaddle=paddle
#画圆并且保存其ID
selfid=canvascreate_oval(10,10,25,25,fill=color)
selfcanvasmove(selfid,245,100)
#小球的水平位置起始列表
start=[-3,-2,-1,1,2,3]
#随机化位置列表
randomshuffle(start)
selfx=start[0]
selfy=-2
selfcanvas_heigh=selfcanvaswinfo_height()#获取窗口高度并保存
selfcanvas_width=selfcanvaswinfo_width()
#根据参数值绘制小球
def draw(self):
selfcanvasmove(selfid,selfx,selfy)
pos=selfcanvascoords(selfid)#返回相应ID代表的图形的当前坐标(左上角和右上角坐标)
#使得小球不会超出窗口
pad=selfcanvascoords(selfpaddleid)#获取小球挡板的坐标
if pos[1]=selfcanvas_heigh or(pos[3]>=pad[1] and pos[2]>=pad[0] and pos[2]
以上就是关于有没有画canvas的微信小程序框架全部的内容,包括:有没有画canvas的微信小程序框架、Python程序开发之简单小程序实例(11)小游戏-跳动的小球、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)