999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于App Inventor的多人協作繪畫板App的設計與實現

2022-05-30 04:37:33楊道全
電腦知識與技術 2022年16期

楊道全

摘要:該文基于App Inventor系統,運用 MQTT 即時通信技術,設計并實現了一個能夠多人協作繪畫的手機應用。在教學實踐中,由于App Inventor系統不要求學生先學習編程語法就能開始編程,極大地降低編程門檻。通過講解該實例的開發,對培養學生的編程興趣,增強學生對網絡通信技術的理解有較好的效果。

關鍵詞:圖形化編程;App Inventor;畫板;MQTT

中圖分類號:TP319? ? ? 文獻標識碼:A

文章編號:1009-3044(2022)16-0097-03

1 引言

智能手機的普及,各種各樣的手機應用滲透到使用者的工作和生活中。盡管如此,智能手機的用戶仍時常找不到合適使用的手機應用,想要自己開發卻苦于沒有掌握編程技術?!癆pp Inventor的出現旨在普及手機應用開發技術,并在各種教育環境中用作學習計算思維的工具,教人們構建應用程序以解決工作與生活中的問題,讓普通人也能開發屬于自己的手機應用。”[1-2]本文基于App Inventor系統設計和實現的手機應用,為編程愛好者和計算思維教學提供參考。

2 相關技術

2.1 App Inventor技術簡介

“App Inventor是一個直觀的可視化編程環境,允許每個人為 Android 手機、iPhone 和 Android/iOS 平板電腦構建功能齊全的應用程序。那些剛接觸App Inventor的人,可以在 30 分鐘內完成第一個簡單應用程序的制作。App Inventor項目旨在幫助所有人,尤其是年輕人,從技術消費轉向技術創造,從而實現軟件開發的普及化?!盵3]截至本文完稿時,App Inventor支持 iPhone(iOS)應用的功能尚未開發完成,還未在官方服務器[4]上線。

App Inventor基于 Apache2 協議開源,因此在國內外有很多個分支版本,本文選用的是國內的 WxBit 圖形化編程系統。該版本針對國內用戶做了大量本地化的開發工作,支持多點觸控并且提供MQTT客戶端組件,支持多人同時連接調試和跨網段調試,對使用者更加友好,也更加適合用于網絡教學。

2.2 MQTT技術簡介

MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議)由 IBM 在1999年發布,構建于 TCP/IP 協議之上,是一種基于發布/訂閱模式的輕量級二進制網絡通信協議。由于 MQTT 協議靈活的訂閱機制、服務質量(Quality of Service)、遺愿消息(Will Message)等特性,適用于低帶寬、不可靠的網絡下提供實時可靠的消息服務,使其在物聯網、小型設備、移動應用等方面有廣泛的應用[5]。MQTT 的訂閱模式如圖1所示。

3 系統設計

3.1 啟動界面設計

本文設計的多人協作繪畫板,允許多位安裝該應用的用戶同時繪畫,每一位用戶所繪制的圖畫,即時在其他用戶的畫板中顯示。在應用啟動時要求用戶填寫畫板名稱,只有使用相同名稱畫板的用戶,才能在一起繪畫,這樣能夠避免多人同時使用該應用時造成混亂。原型設計如圖2所示。

3.2 繪畫界面設計

用戶填寫畫板名稱進入后,即可開始繪畫。默認選中黑色的畫筆,用戶手指按在屏幕上移動,移動的軌跡連接起來,就是所畫出的線條。允許多個手指同時按在屏幕上繪畫,以便用戶可以快捷畫出多層的線條或其他特殊的效果。應用根據手指按在屏幕的順序給予編號,可以為每個序號的手指設置不同的畫筆粗細和顏色。原型設計如圖3所示。

3.3 協作設計

用戶輸入畫板名稱開始繪畫,實際就是向MQTT Broker發布和訂閱畫板名稱設置的主題。當用戶手指(觸控點)在屏幕移動時,應用將接收到的屏幕坐標發送到該主題,本應用和其他使用相同主題的應用都會接收到坐標消息??紤]到教學所需的可讀性,坐標消息設計為JSON文本,數據結構設計如下:

{"id":"client1","paths":{"1":{"size":1,"color":-16777216,"points":[[12,10],[14,20],[20,30],[22,43]]},"2":{"size":2,"color":-20561,"points":[[100,80],[90,90],[93,95],[93,124],[99,135]]}}}

id:繪畫板的標識,也是MQTT客戶端的標識,用于區分消息來源。

paths:筆畫記錄,對應觸控點的移動軌跡。

size:畫筆的粗細,單位為dp(Density-independent Pixels)。

color:畫筆的顏色,為ARGB表示顏色對應的整數值。

points:筆畫的坐標點,記錄觸控點依次經過的屏幕坐標。

4 系統實現

打開瀏覽器登錄 WxBit 圖形化編程系統,新建一個名稱為“多人協作繪畫板v1”的項目開始制作。創建項目完成后自動進入編程界面,在項目名稱條的右邊有2個按鈕,代表系統的兩種視圖:組件設計和邏輯設計。在組件設計視圖中擺放好使用到的組件,再切換到邏輯設計視圖完成圖形化編程。

4.1 啟動界面的組件設計

按照設計,在開始繪畫前,需要用戶填寫繪畫板的名稱。Screen1為應用啟動的第一個屏幕,首先在Screen1的組件屬性中,將對齊方式設置為“上中”,屏幕方向設置為“鎖定橫屏”,去除“是否顯示狀態欄”和“是否顯示標題欄”前面的勾選。然后從組件面板的“界面布局”中拖入一個水平布局,對齊方式設置為正中,寬度設置為充滿,高度為50dp。再按照圖2的原型設計,添加輸入框和按鈕等其他組件,完成的設計如圖4所示。

4.2 啟動界面的邏輯設計

進入邏輯設計視圖前,先“增加屏幕”,命名為DrawingBoard,也就是點擊“開始繪畫”按鈕后進入的屏幕。當“開始繪畫”按鈕被點擊時,如果畫板名稱不為空,就進入 DrawingBoard 屏幕,否則顯示提示信息。進入邏輯設計視圖,點擊模塊中的“按鈕_開始繪畫”,將“當‘按鈕_開始繪畫被點擊”圖形塊拖進工作面板,開始邏輯設計,完成的設計如圖5所示。

4.3 繪畫界面的組件設計

首先在屏幕屬性中,將屏幕方向設置為“鎖定橫屏”,隱藏狀態欄和標題欄。從“界面布局”中將“層疊布局”拖入工作面板,寬高設置為充滿,再從“繪圖動畫”中拖入畫布放到層疊布局中,寬高設置為充滿。按照圖3的原型設計加入其他組件,完成后如圖6所示。

在工作面板的下方,有三個不可見組件,其中的 MQTT 客戶端用于向 MQTT Broker 發布和訂閱消息,計時器又是什么用途呢?在繪畫時,隨著手指的移動短時間產生大量坐標點信息,如果直接將這些坐標點發布出去,將會發生消息堵塞或者錯位。因為 MQTT Broker 可能對消息的發布頻率有限制,而且由于每次發送消息的網絡通信時間不確定,相差若干毫秒的兩個消息,可能出現先發送的消息后到達服務器的情況。為此,需要先將筆畫坐標點放到消息隊列中,在計時器到達設定時間間隔后再發送,降低發送消息的頻率。如果時間間隔設置過長,就會出現比較大的消息延遲,如果設置過短又會導致前面所述的問題。一般設置為MQTT客戶端與MQTT Broker連接延遲的3倍以上,不低于100毫秒。

4.4 繪畫界面的邏輯設計

從啟動界面進入繪畫界面時,將所填寫的畫板名稱記錄到全局變量中,并嘗試連接MQTT Broker,連接成功才啟動計時器定時處理筆畫消息隊列,具體實現如圖7所示。

當手指在畫布按下時設置筆畫列表為空,在畫布組件中移動時將劃過的坐標點加入消息隊列,具體實現如圖8和圖9所示。

當計時器到設定的計時間隔點,將筆畫信息發布到MQTT Broker,以便本機及其他訂閱了相同主題的手機收到。需要注意的是,將筆畫信息加入消息隊列后要將全局變量中記錄的筆畫信息清空,并將最后一個坐標點放回筆畫記錄字典中,實現如圖10所示。

當MQTT客戶端收到消息時,將文本格式的JSON轉為字典結構,讀出筆畫信息并據此在畫布中繪畫。實現如圖11所示。

5 結束語

本文實現的“多人協作繪畫板”實例涉及變量、函數、數據結構、網絡通信等多方面的知識,限于篇幅不能展開討論。實現部分也只能粗略介紹消息發布與訂閱相關的邏輯,沒有進行異常處理及容錯,如連接MQTT失敗時如何繼續本地繪畫等,如何完善留待讀者思考。畫布的撤銷與重做機制也沒有實現,在教學環節中這些“不足”與“缺陷”可以根據教學時長擴展,也可以作為留給學生的作業,讓學生繼續探索以加深理解。

參考文獻:

[1] Wolber D,Abelson H,Spertus E,et al.App inventor[J]. O'Reilly Media,Inc.,2011.

[2] Patton E W,Tissenbaum M,Harunani F.MIT App Inventor:Objectives,Design,and Development [C]//Computational thinking education.Singapore:Springer,2019:31-49.

[3] About Us[EB/OL].[2021-09-20].http://appinventor.mit.edu/about-us.

[4] MIT App Inventor 2[EB/OL].[2021-09-20].http://ai2.appinventor.mit.edu.

[5] MQTT:The Standard for IoT Messaging[EB/OL].[2021-09-20].https://mqtt.org.

【通聯編輯:謝媛媛】

主站蜘蛛池模板: 青青青视频91在线 | 激情亚洲天堂| 国产精品999在线| 亚洲第一成网站| 成人综合久久综合| 在线观看视频99| 玖玖精品视频在线观看| 黄片一区二区三区| 国产精品永久久久久| 美女内射视频WWW网站午夜| 人妻无码中文字幕一区二区三区| 激情国产精品一区| 无码有码中文字幕| AV天堂资源福利在线观看| 在线观看国产网址你懂的| 四虎在线观看视频高清无码| 亚洲爱婷婷色69堂| 人妻21p大胆| 久草国产在线观看| 国产理论一区| 色爽网免费视频| a级毛片免费网站| 免费网站成人亚洲| 中文字幕伦视频| 欧美日韩动态图| 国产一级视频久久| 性网站在线观看| 国内精品视频区在线2021| 日本日韩欧美| 久久国产亚洲欧美日韩精品| 久久99国产乱子伦精品免| 一级福利视频| 2021国产精品自拍| 天堂亚洲网| 欧美成人午夜视频免看| 久久久久久午夜精品| 青青草原国产一区二区| 国产在线视频福利资源站| 亚洲国产日韩在线成人蜜芽| 激情综合婷婷丁香五月尤物| 日本久久免费| 国模私拍一区二区| 亚洲欧美日韩天堂| 色AV色 综合网站| 国内精品小视频在线| 九色综合视频网| 4虎影视国产在线观看精品| 欧美亚洲第一页| 久久精品人人做人人爽97| 一级成人a毛片免费播放| 一区二区偷拍美女撒尿视频| 丰满的少妇人妻无码区| 国产黄网永久免费| 中国国产一级毛片| 亚洲欧美极品| 2021精品国产自在现线看| 精品伊人久久久久7777人| 国产色网站| 久草美女视频| 亚洲VA中文字幕| 国产色婷婷视频在线观看| 欧美精品一区在线看| 青青青国产免费线在| 国内熟女少妇一线天| 亚洲日本一本dvd高清| 亚洲中文精品人人永久免费| 九九线精品视频在线观看| 成人国产精品网站在线看 | 国产v精品成人免费视频71pao| 日韩欧美中文字幕一本| 亚洲一区二区三区香蕉| 亚洲综合香蕉| 91美女视频在线| 国产制服丝袜无码视频| 国产一级α片| 免费黄色国产视频| 久久久精品国产SM调教网站| 3D动漫精品啪啪一区二区下载| 国产9191精品免费观看| 一级毛片免费高清视频| 鲁鲁鲁爽爽爽在线视频观看 | 91po国产在线精品免费观看|