抽奖平台小程序怎么看结果(鸿蒙上实现“抽奖”小程序)

首页教程更新时间:2023-05-24 08:49:40

作者:木棉花潘颖琳

本文是关于鸿蒙 Web 组件抽奖案例(ArkTS)的学习笔记。

抽奖平台小程序怎么看结果,鸿蒙上实现“抽奖”小程序(1)

本文分享的案例是 Web 组件如何加载本地 H5 小程序。所加载的页面是一个由 HTML CSS Javascript 实现的完整小应用。

至于加载云端的 H5 小程序,实现步骤类似,可移步至 codelabs-Web 组件抽奖案例细览。

https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/tutorials_HarmonyOS-WebComponent-ArkTS?ha_linker=eyJ0cyI6MTY3NzczNjQ3MjAxOSwiaWQiOiJiNzBiMmI1ODVhY2M0MGY4ODJmZjExYzFhM2QxYzE2NiJ9

效果图如下:

抽奖平台小程序怎么看结果,鸿蒙上实现“抽奖”小程序(2)

关键知识概念

Web 组件:提供具有网页显示能力的 Web 组件。访问在线网页时需添加网络权限:ohos.permission.INTERNET。

https://developer.HarmonyOS.com/cn/docs/documentation/doc-references/ts-basic-components-web-0000001333720957?ha_linker=eyJ0cyI6MTY3NzczNjcwNTgzMSwiaWQiOiI4ZDBkZTMzZjU1MzY0NDRlYjZkYTQ5MjM1MzcwMjEzZiJ9

抽奖平台小程序怎么看结果,鸿蒙上实现“抽奖”小程序(3)

runJavaScript:异步执行 JavaScript 脚本,并通过回调方式返回脚本执行的结果。

runJavaScript 需要在 loadUrl 完成后,比如 onPageEnd 中调用。

runJavaScript(options: { script: string, callback?: (result: string) => void })

抽奖平台小程序怎么看结果,鸿蒙上实现“抽奖”小程序(4)

onConfirm:网页调用 Confirm() 告警时触发此回调。此案例是用于回显抽奖结果。

onConfirm(callback: (event?: { url: string; message: string; result: JsResult }) => boolean)

抽奖平台小程序怎么看结果,鸿蒙上实现“抽奖”小程序(5)

创建空项目

选择 HarmonyOS 模板,项目 SDK 选择为 API9,选择模型为 Stage 模型。

抽奖平台小程序怎么看结果,鸿蒙上实现“抽奖”小程序(6)

抽奖平台小程序怎么看结果,鸿蒙上实现“抽奖”小程序(7)

如果要加载云端 H5 小程序的话,要记得在 module.json5 文件下添加网络权限:

"requestPermissions": [ { "name": "ohos.permission.INTERNET" } ],

编写本地 H5 页面

在 src/main/resources/rawfile 下分别创建:

抽奖平台小程序怎么看结果,鸿蒙上实现“抽奖”小程序(8)

主要代码(抽奖功能实现):

// 旋转函数 function roll() { // 速度衰减 speed -= 50; if (speed <= 10) { speed = 10; } // 每次调用都去掉全部active类名,即去掉选中单元格的效果 for (let j = 0; j < allPrizesLi.length; j ) { allPrizesLi[j].classList.remove('active'); } prizesPosition ; // 计算转圈次数,每至尾元素则圈数 1 if (prizesPosition >= allPrizesLi.length - 1) { prizesPosition = 0; count ; } //为当前选中的单元格添加active类,以添加选中的效果样式 allPrizesLi[prizesPosition].classList.add('active'); let initSpeed = 500; let timer; //定义定时器 let totalCount = 5; // 至少转动的总圈数 // 满足转圈数和指定位置就停止 if (count >= totalCount && (prizesPosition 1) == index) { clearTimeout(timer); isClick = true; speed = initSpeed; timer = setTimeout(openDialog, 1000); // 等待1s打开弹窗 } else { timer = setTimeout(roll, speed); // 不满足条件时调用定时器 // 最后一圈减速 if (count >= totalCount - 1 || speed <= 50) { speed = 100; } } }

// 抽奖开始函数 function startDraw() { // 防止抽奖多次触发 if (isClick) { count = 0; // 随机产生中奖位置 index = Math.floor(Math.random() * prizesArr.length 1); roll(); isClick = false; } } function openDialog() { confirm(prizesArr[prizesPosition]); }

调用 web 组件

在 pages 文件下创建文件 MainPage 和 WebPage,其中 WebPage 用于调用 web 组件,在 MainPage 中有用到一个自定义属性,觉得蛮有用的,记录一下:

@Extend(Button) function fancy (top: string) { .fontSize(16) .fontColor($r('app.color.start_window_background')) .width('86.7%') .height('5.1%') .margin({ top: top }) .backgroundColor($r('app.color.blue')) .borderRadius('20') }

Navigator({ target:'pages/WebPage', type: NavigationType.Push }) { Button($r('app.string.loadLocalH5')) .fancy('10%') } .params({ path:$rawfile('index.html'), tips: $r('app.string.local') }) }

通过 navigator 组件带参跳转至 WebPage 界面,使用 web 组件前要先创建一个 web 控制器,则添加以下代码:

webController: web_webview.WebviewController = new web_webview.WebviewController(); @State params: object = router.getParams();

其中,webviewController 要将 IDE 升级到最新版本才能用,是 API9 的接口,上述 WebController 接口在最新版本时弃用了。

抽奖平台小程序怎么看结果,鸿蒙上实现“抽奖”小程序(9)

同时要注意在 EntryAbility.ts 文件下修改:,也要注意查看 main_pages.json 的配置。

抽奖平台小程序怎么看结果,鸿蒙上实现“抽奖”小程序(10)

WebPage 中主要代码部分:

// web组件加载本地H5 Web({ src: this.params['path'], controller: this.webController }) .zoomAccess(false) .width('93.3%') .aspectRatio(1) .margin({ left: '3.3%', right: '3.3%', top:'7.1%'}) .onConfirm((event) => { alertDialog.show({ message: '恭喜您抽中' `${event.message}`, confirm: { value: $r('app.string.web_alert_dialog_button_value'), action: () => { event.result.handleConfirm(); } }, cancel: () => { event.result.handleCancel(); } }); return true; })

下方的按钮,异步执行 JavaScript 脚本 startDraw()。

Button($r('app.string.btnValue')) .fontSize(16) .fontColor($r('app.color.start_window_background')) .margin({ top: '10%' }) .width('86.7%') .height('5.1%') .backgroundColor($r('app.color.blue')) .borderRadius('20') .onClick(() => { this.webController.runJavaScript('startDraw()'); })

到此,然后就可以运行模拟器 P50 进行调试了!

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
情人节矢量素材(紫色浪漫)
情人节矢量素材(紫色浪漫)
下载
迷你小镇城堡
迷你小镇城堡
下载
聪明兔多多
聪明兔多多
下载
光头破坏王
光头破坏王
下载
iVideoformacV7.0.1
iVideoformacV7.0.1
下载
堆栈球红包版
堆栈球红包版
下载
星露谷物语红眼睛的魔鬼狗MOD
星露谷物语红眼睛的魔鬼狗MOD
下载
会计准题库
会计准题库
下载
购物狂之路
购物狂之路
下载
神兽无疆
神兽无疆
下载
rasmontr.dll
rasmontr.dll
下载
i晋马
i晋马
下载
每日印象
每日印象
下载
丧尸漫步
丧尸漫步
下载
梦工厂影视v2.13绿色版
梦工厂影视v2.13绿色版
下载
辐射4墙壁房顶坑洞修复MOD
辐射4墙壁房顶坑洞修复MOD
下载