天天看點

簡單3步,OpenHarmony上跑起ArkUI分布式小遊戲

轉自:OpenAtom OpenHarmony

在9月30日更新的 OpenHarmony3.0 LTS 上,标準系統新增支援了方舟開發架構(ArkUI)、分布式組網和 FA 跨裝置遷移能力等新特性,是以我們結合了這三種特性使用 ets 開發了一款如下動圖所示傳炸彈應用。

簡單3步,OpenHarmony上跑起ArkUI分布式小遊戲

打開應用在通過邀請使用者進行裝置認證後,使用者須根據提示完成相應操作,然後通過分布式流轉實作随機傳遞炸彈給下一位使用者的效果。那麼這樣一款傳炸彈應用如何進行開發呢?

完整的項目結構目錄如下:

我們可以分為如下 3 步:編寫聲明式 UI 界面、添加分布式能力和編寫遊戲邏輯。

1. 新增工程

在 DevEco Studio 中點選 File -> New Project ->Standard Empty Ability->Next,Language 選擇 ETS 語言,最後點選 Finish 即建立成功。

簡單3步,OpenHarmony上跑起ArkUI分布式小遊戲

圖1 建立工程

2. 編寫遊戲頁面

簡單3步,OpenHarmony上跑起ArkUI分布式小遊戲

圖2 遊戲界面效果圖

效果圖如上可以分為兩部分:

頂部狀态提示欄

首先在 @entry 元件入口 build() 中使用 Stack 作為容器,達到圖檔和文字堆疊的效果;

接着依次寫入 Image 包裹的兩個 Text 元件;

中間遊戲炸彈九宮格區域

使用 Grid 網格容器來編寫九宮格區域;

在 GridItem 中 Stack (容器依次添加方塊背景圖檔和炸彈圖檔;

在 visibility 屬性中用 bombIndex 變量值來決定炸彈顯示的位置;

通過 onClick 點選事件和 GestureGroup 組合手勢加入單擊、輕按兩下和長按的監聽事件;

3. 添加彈窗

建立規則遊戲彈窗

  1)通過 @CustomDialog 裝飾器來建立自定義彈窗,使用方式可參考:

自定義彈窗文檔:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-methods-custom-dialog-box.md

  2)規則彈窗效果如下,彈窗組成由兩個 Text 和兩個 Image 豎向排列組成,是以我們可以在 build()下使用 Column 容器來包裹,元件代碼如下;

簡單3步,OpenHarmony上跑起ArkUI分布式小遊戲

圖3 遊戲規則

3)在 @entry 建立 CustomDialogController 對象并傳入彈窗所需參數,後面可通過該對象 open() 和 close() 方法進行打開和關閉彈窗;

建立遊戲失敗彈窗,并添加動畫效果

簡單3步,OpenHarmony上跑起ArkUI分布式小遊戲

圖4 遊戲失敗彈窗動畫

1)編寫彈窗布局:将遊戲失敗文本、炸彈圖檔和再來一局按鈕圖檔放置于 Column 容器中;

2)用變量來控制動畫起始和結束的位置:用 Flex 容器包裹炸彈圖檔,并用 @State 裝飾變量 toggle,通過變量來動态修改 [Flex]的direction 屬性;

3)設定動畫效果:使用 animateTo 顯式動畫接口炸彈位置切換時添加動畫,并且設定定時器定時執行動畫;

分布式流轉需要在同一網絡下通過  DeviceManager 元件進行裝置間發現和認證,擷取到可信裝置的 deviceId 調用 FeatureAbility.startAbility(parameter),即可把應用程式流轉到另一裝置。

原本分布式流轉應用流程如下:

建立 DeviceManager 執行個體;

調用執行個體的 startDeviceDiscovery(),開始裝置發現未信任裝置;

設定裝置狀态監聽 on('deviceStateChange',callback),監聽裝置上下線狀态;

設定裝置狀态監聽 on('deviceFound',callback),監聽裝置發現;

傳入未信任裝置參數,調用執行個體 authenticateDevice 方法,對裝置進行 PIN 碼認證;

若是已信任裝置,可通過執行個體的 getTrustedDeviceListSync() 方法來擷取裝置資訊;

将裝置資訊中的 deviceId 傳入featureAbility.startAbility 方法,實作流轉;

流轉接收方可通過featureAbility.getWant() 擷取到發送方攜帶的資料;

登出裝置發現監聽 off('deviceFound');

登出裝置狀态監聽 off('deviceStateChange');

項目中将上面裝置管理封裝至 RemoteDeviceManager,通過 RemoteDeviceManager 的四個方法來動态維護 deviceList 裝置資訊清單。

簡單3步,OpenHarmony上跑起ArkUI分布式小遊戲

圖5 分布式流轉

項目實作分布式流轉隻需如下流程:

1. 建立RemoteDeviceManager執行個體

1)導入 RemoteDeviceManager

2)聲明 @Provide 裝飾的裝置清單變量 deviceList,和建立 RemoteDeviceManager 執行個體。

2. 重新整理裝置清單

在生命周期 aboutToAppear 中,調用重新整理裝置清單和開始發現裝置。

aboutToAppear 定義:函數在建立自定義元件的新執行個體後,在執行其 build 函數之前執行。

3. 裝置認證

4. 跨裝置流轉

從 deviceList 中擷取裝置清單線上的裝置 Id,通過 featureAbility.startAbility 進行流轉。

5. 登出監聽

在聲明周期 aboutToDisappear 進行登出監聽。

aboutToDisappear 定義:函數在自定義元件析構消耗之前執行。

1. 開始遊戲

2. 判斷輸赢

編寫判斷邏輯,用于不同的點選事件中調用。

3. 遊戲失敗

遊戲失敗,彈出遊戲失敗彈框。

四、項目下載下傳和導入

項目倉庫位址:

https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/FA/Entertainment/BombGame

1)git下載下傳

2)項目導入

打開 DevEco Studio,點選 File->Open->下載下傳路徑/FA/Entertainment/BombGame

1. 裝置編譯限制

擷取OpenHarmony源碼(OpenHarmony 版本須 3.0 LTS 以上):https://www.openharmony.cn/pages/0001000202/#%E5%AE%89%E8%A3%85%E5%BF%85%E8%A6%81%E7%9A%84%E5%BA%93%E5%92%8C%E5%B7%A5%E5%85%B7

安裝開發闆環境:https://www.openharmony.cn/pages/0001000400/#hi3516%E5%B7%A5%E5%85%B7%E8%A6%81%E6%B1%82

開發闆燒錄:https://www.openharmony.cn/pages/0001000401/#%E4%BD%BF%E7%94%A8%E7%BD%91%E5%8F%A3%E7%83%A7%E5%BD%95

 2. 應用編譯限制

參考應用開發快速入門:https://www.openharmony.cn/pages/00090000/

內建開發環境(DevEco Studio 3.0.0.601版本以上)下載下傳位址:https://developer.harmonyos.com/cn/develop/deveco-studio#download_beta

OpenHarmony SDK 3.0.0.0 以上;

簡單3步,OpenHarmony上跑起ArkUI分布式小遊戲

掃碼添加開發者小助手微信

擷取更多HarmonyOS開發資源和開發者活動資訊​​​​

繼續閱讀