@@ -40,10 +40,10 @@ type Canvas struct {
4040` NewCanvas ` 函数用于创建并初始化一个` Canvas ` 对象:
4141``` wa
4242#wa:import wa_js_env newCanvas
43- fn newCanvas_JS(w, h: u32) => u32
43+ func newCanvas_JS(w, h: u32) => u32
4444
4545#创建一个宽度为w像素、高度为h像素的画布对象
46- fn NewCanvas(w, h: u32) => *Canvas {
46+ func NewCanvas(w, h: u32) => *Canvas {
4747 var canvas Canvas
4848 canvas.device_id = newCanvas_JS(w, h)
4949 canvas.width = w
@@ -61,22 +61,22 @@ fn NewCanvas(w, h: u32) => *Canvas {
6161
6262``` wa
6363#获取画布对象坐标为(x, y)处的像素颜色值
64- fn Canvas.GetPixel(x, y: u32) => u32 {
64+ func Canvas.GetPixel(x, y: u32) => u32 {
6565 return this.frame_buf[y * this.width + x]
6666}
6767
6868#设置画布对象坐标(x, y)处的颜色值为color
69- fn Canvas.SetPixel(x, y, color: u32) {
69+ func Canvas.SetPixel(x, y, color: u32) {
7070 this.frame_buf[y * this.width + x] = color
7171}
7272```
7373
7474当整个帧缓存填充完毕后,通过` Canvas.Flush ` 方法将帧缓存数据更新至页面中的画布对象;与创建画布DOM对象类似,该操作也需要通过JS环境导入的函数完成:
7575``` wa
7676#wa:import wa_js_env updateCanvas
77- fn updateCanvas_JS(id: u32, buf: *u32)
77+ func updateCanvas_JS(id: u32, buf: *u32)
7878
79- fn Canvas.Flush() {
79+ func Canvas.Flush() {
8080 updateCanvas_JS(this.device_id, &this.frame_buf[0])
8181}
8282```
@@ -85,8 +85,8 @@ fn Canvas.Flush() {
8585
8686``` wa
8787#画布事件回调函数原型
88- type OnTouch fn (x, y: u32)
89- type OnKey fn (key: u32)
88+ type OnTouch func (x, y: u32)
89+ type OnKey func (key: u32)
9090
9191#画布事件
9292type CanvasEvents struct {
@@ -103,7 +103,7 @@ var canvas_events: []CanvasEvents
103103一个` CanvasEvents ` 对应某个` Canvas ` 的一组交互事件回调函数,其对应关系由` CanvasEvents.Device_id ` 和` Canvas.device_id ` 确定。canvas包的包级变量` canvas_events ` 是一个动态数组,凹语言侧代码可以通过` AttachCanvasEvents ` 函数将一个事件对象附加到事件对象数组中:
104104
105105``` wa
106- fn AttachCanvasEvents(e: CanvasEvents) {
106+ func AttachCanvasEvents(e: CanvasEvents) {
107107 for i := range canvas_events {
108108 if canvas_events[i].Device_id == e.Device_id {
109109 canvas_events[i] = e
@@ -123,7 +123,7 @@ fn AttachCanvasEvents(e: CanvasEvents) {
123123id为画布DOM对象对应的Canvas对象id
124124(x, y)为画布像素坐标系坐标
125125*/
126- fn OnMouseDown(id: u32, x, y:u32) {
126+ func OnMouseDown(id: u32, x, y:u32) {
127127 for _, i := range canvas_events {
128128 if i.Device_id == id {
129129 i.OnMouseDown(x, y)
@@ -150,7 +150,7 @@ type GameState struct {
150150
151151var gameState: GameState
152152
153- fn GameState.Init(w, h: i32, scale: i32) {
153+ func GameState.Init(w, h: i32, scale: i32) {
154154 this.w = w
155155 this.h = h
156156 this.scale = scale
@@ -159,9 +159,9 @@ fn GameState.Init(w, h: i32, scale: i32) {
159159
160160 var caev: canvas.CanvasEvents
161161 caev.Device_id = this.ca.GetDeviceID()
162- caev.OnMouseDown = fn (x, y: u32) {}
163- caev.OnMouseUp = fn (x, y: u32) {}
164- caev.OnKeyUp = fn (key: u32) {}
162+ caev.OnMouseDown = func (x, y: u32) {}
163+ caev.OnMouseUp = func (x, y: u32) {}
164+ caev.OnKeyUp = func (key: u32) {}
165165 caev.OnKeyDown = this.OnKeyDown
166166
167167 Dirs[DirNull] = Position{x: 0, y: 0}
@@ -179,7 +179,7 @@ fn GameState.Init(w, h: i32, scale: i32) {
179179游戏的处理流程很简单:
180180
181181``` wa
182- fn GameState.Step() {
182+ func GameState.Step() {
183183 if this.dir == DirNull {
184184 return
185185 }
@@ -219,11 +219,11 @@ fn GameState.Step() {
219219 this.ca.Flush()
220220}
221221
222- fn Step() {
222+ func Step() {
223223 gameState.Step()
224224}
225225
226- fn main() {
226+ func main() {
227227 gameState.Init(32, 32, 10)
228228 gameState.Start()
229229}
0 commit comments