抖音抢福袋源码
约 3413 字大约 11 分钟
"ui";
let myapp = {}
myapp.count = '9999'
myapp.time = '10'
myapp.存储标识 = "dy_cf_Y443"
let 屏幕高度 = device.height
let 屏幕宽度 = device.width
let 悬浮创建 = 0
//IMG图片数据
img_zfb = "https://s3.bmp.ovh/imgs/2022/12/31/3dfdc9646eaa3ab0.jpeg";
img_wx = "https://s3.bmp.ovh/imgs/2022/12/31/865ed7216ef93cc7.jpeg";
ui.statusBarColor("#50000000");
const AllColor = "#000000"
const alpha = 1
const primary = '#66B3FF'
ui.statusBarColor(colors.parseColor(primary));
const resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
const statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
const toolbarHeight = parseInt(statusBarHeight / 2)
//自定义控件 付款方式
var v_pay_radio = [];//支付方式 单选框值
//自定义控件 付款方式
var payLayout = (function () {
util.extend(payLayout, ui.Widget);
function payLayout() {
ui.Widget.call(this);
this.defineAttr("name", (view, attr, value, defineSetter) => {
view._pay_name.setText(value);
});
this.defineAttr("label", (view, attr, value, defineSetter) => {
view._label_text.setText(value)
switch (value) {
case "推荐":
view._label_bg.attr("cardBackgroundColor", "#f5a623")
view._radio.attr("checked", true)
break;
case "维护":
view._label_bg.attr("cardBackgroundColor", "#999999")
break;
}
view._label_bg.attr("visibility", "visible");
})
this.defineAttr("subtitle", (view, attr, value, defineSetter) => {
view._subtitle.setText(value);
view._subtitle.attr("visibility", "visible");
});
this.defineAttr("src", (view, attr, value, defineSetter) => {
view._img.attr("src", value);
});
this.defineAttr("onClick", (view, name, defaultGetter) => {
return this._onClick;
}, (view, name, value, defaultSetter) => {
v_pay_radio[v_pay_radio.length] = view._radio
this._onClick = value;
});
}
payLayout.prototype.render = function () {
return (
<vertical >
<frame h="1" w="*" bg="#e3e3e3" />
<horizontal marginTop="10" marginBottom="10" w="*" h="44" >
<img id="_img" w="44" src="#ffffff" />
<vertical h="*" w="auto" marginLeft="10">
<horizontal h="22" w="auto">
<text id="_pay_name" w="auto" text="未知" textSize="18" textStyle="bold" textColor="#000000" minWidth="60" />
<card id="_label_bg" w="auto" h="auto" marginLeft="10" layout_gravity="center_vertical" cardCornerRadius="6" cardBackgroundColor="#f5a623"
foreground="?selectableItemBackground" visibility="invisible">
<text id="_label_text" margin="10 0 10 0" text="暂无" textStyle="bold" textSize="14" textColor="#ffffff" />
</card>
</horizontal>
<text id="_subtitle" w="auto" h="*" gravity="bottom" text="暂无" textSize="12" visibility="invisible" />
</vertical>
<vertical w="*" h="*" gravity="right|center">
<radio id="_radio" w="auto" clickable="false" />
</vertical>
</horizontal>
</vertical>
)
};
payLayout.prototype.onViewCreated = function (view) {
view.on("click", () => {
if (this._onClick) {
for (let i = 0; i != v_pay_radio.length; i++) {
v_pay_radio[i].attr("checked", false);
}
if (view._label_text.text() == "维护") {
pay = 0
alert(view._pay_name.text() + "正在维护中")
view._radio.attr("checked", true)
} else {
pay = view._pay_name.text()
view._radio.attr("checked", true)
}
// view._radio.attr("checked", true)
eval(this._onClick);
}
});
};
ui.registerWidget("pay-layout", payLayout);
return payLayout;
})();
ui.layout(
<drawer bg="#ffffff">
<vertical>
<toolbar bg='{{primary}}' id="toolbar" title='承接脚本定制QQ:68107808' >
</toolbar>
<card margin="3 1" contentPadding="5" cardElevation="0" cardCornerRadius="10" cardBackgroundColor="#AFEEEE" alpha="{{alpha}}" >
<TextView id="tv_text" singleLine="true" ellipsize="marquee" textSize="12" focusable="true"
text="本作品仅供学习交流,不得用于任何商业以及非法用途,下载试用后请24小时之内自行删除,因使用软件造成的使用者以及任何网站的一切损失, 皆由使用者承担。如不接受本条款,请立即删除本软件,如不慎软件被破解,皆由破解者承担一切责任本作品仅供学习交流!请于24小时内自行删除!"
textColor="#000000" />
</card>
<card margin="3 1" cardElevation="0" cardCornerRadius="10" cardBackgroundColor="#AFEEEE" alpha="{{alpha}}" >
<linear gravity="left">
<Switch id="autoService" Thumbcolor="#000000" Trackcolor="#000000" text="无障碍服务" textColor="#000000" w="150" checked="{{auto.service != null}}" padding="8 8 8 8" textSize="15sp" />
</linear>
<linear gravity="right" >
<Switch id="overlayService" Thumbcolor="#000000" Trackcolor="#000000" text="悬浮窗权限" textColor="#000000" w="150" checked="{{auto.service != null}}" padding="8 8 8 8" textSize="15sp" />
</linear>
</card>
<card margin="3 3" cardElevation="0" cardCornerRadius="10" cardBackgroundColor="#AFEEEE" alpha="{{alpha}}" >
<vertical padding="10" h="auto">
<text gravity='left' text="软件说明" textColor="#009688" textSize="13sp" maxLines="1" />
<text gravity='left' text="1. 五云科技-老猫QQ68107808, 承接脚本定制" textColor="#222222" textSize="13sp" maxLines="1" />
<text gravity='left' text="2. 本软件基于Auto.js编写手写,仅用于交流学习" textColor="#222222" textSize="13sp" maxLines="1" />
</vertical>
</card>
<viewpager id="viewpager">
<frame >
<ScrollView >
<vertical >
<card margin="3 1" cardElevation="0" cardCornerRadius="10" cardBackgroundColor="#AFEEEE" alpha="{{alpha}}" >
<vertical padding="3 1 1 1" h="auto">
<linear gravity="left">
<vertical w="*" h="auto" marginTop="10" bg="#AFEEEE">
<vertical margin="10 10 20 10">
<text text="运行模式" marginBottom="10" textSize="22" textStyle="bold" textColor="#000000" />
{/* <View margin='0 1 0 1' bg='#ffffff' w='*' h='1' /> */}
<pay-layout w="*" h="auto"
name="超级福袋"
src="{{img_zfb}}"
label="推荐"
subtitle="数人都在用 , 安全可托付"
onClick="pay_bnt_color1()"
/>
<pay-layout w="*" h="auto"
name="普通福袋"
src="{{img_wx}}"
label="正常"
subtitle="诚信1 + 1 , 运行稳定可靠"
onClick="pay_bnt_color2()"
/>
{/* <View margin='0 1 0 1' bg='#ffffff' w='*' h='1' /> */}
</vertical>
</vertical>
</linear>
<View margin='0 1 0 1' bg='#ffffff' w='*' h='1' />
<linear margin="10 10 20 10" >
<text textSize="16sp" textColor="#000000" text="总参与领取福袋" w="auto" />
<input gravity="center" textSize="16sp" textColor="#009688" id="count" inputType="text" text="" w="60" />
<text textSize="16sp" textColor="#000000" text="次后停止运行" w="auto" />
</linear>
</vertical>
</card>
<card margin="3 30" cardElevation="0" cardCornerRadius="10" cardBackgroundColor="#AFEEEE" alpha="{{alpha}}" >
<button alpha="1" bg="#AFEEEE" textColor="#000000" id="start">开启悬浮窗</button>
</card>
</vertical>
</ScrollView>
</frame>
</viewpager>
</vertical>
</drawer>
);
// ==================
run_type = "超级福袋"
function pay_bnt_color1() {
run_type = "超级福袋"
ui.run(function () {
})
}
function pay_bnt_color2() {
run_type = "普通福袋"
ui.run(function () {
})
}
ui.tv_text.setSelected(true);//设置文字滚动状态
读取界面配置(true)
//右上角设置
activity.setSupportActionBar(ui.toolbar);
//创建选项菜单(右上角)
ui.emitter.on("create_options_menu", menu => {
menu.add("日志");
});
//监听选项菜单点击
ui.emitter.on("options_item_selected", (e, item) => {
switch (item.getTitle()) {
case "日志":
app.startActivity("console");
break;
}
e.consumed = true;
});
ui.autoService.on("check", function (checked) {
// 用户勾选无障碍服务的选项时,跳转到页面让用户去开启
if (checked && auto.service == null) {
app.startActivity({
action: "android.settings.ACCESSIBILITY_SETTINGS"
});
}
if (!checked && auto.service != null) {
auto.service.disableSelf();
}
});
ui.emitter.on("resume", function () {
// 此时根据无障碍服务的开启情况,同步开关的状态
ui.autoService.checked = auto.service != null;
});
ui.overlayService.on("check", function (checked) {
// 用户勾选无障碍服务的选项时,跳转到页面让用户去开启
if (checked) {
try {
int = app.startActivity({
packageName: "com.android.settings",
className: "com.android.settings.Settings$AppDrawOverlaySettingsActivity",
data: "package:" + context.getPackageName().toString()
});
} catch (err) {
app.openAppSetting(getPackageName("dy_cf"));
}
toast("请打开悬浮窗开关");
}
if (!checked && auto.service != null) {
// auto.service.disableSelf();
toast("已关闭悬浮窗权限");
}
});
ui.start.on("click", () => { //按钮单击事件 哪个按钮 start 需要修改这个ID
保存界面配置() //先读取配置
读取界面配置(false)
if (auto.service == null) {
toastLog("请先开启无障碍服务!");
return
};
if (悬浮创建 == 0) {
events.removeAllKeyDownListeners("volume_up")
// 屏蔽音量键调节声音
events.setKeyInterceptionEnabled("volume_up", true);
events.observeKey();
//监听音量键按下
events.onKeyDown("volume_up", () => {
exit()
});
threads.start(function () {
日志显示(0, 屏幕高度 * 0.7, true)
})
悬浮创建 = 1
}
// home()
toast('脚本转入后台')
// app.launchApp("抖音")
});
function Main() {
let number = 0
// 记时开始
let timeStart = timeStamp();
dlog("当前版本:" + getVerName(app.getPackageName('抖音')) + ' 执行分钟: ' + 0 + ' / ' + myapp.time + ' 参与次数: ' + 0 + ' / ' + myapp.count);
jlog('执行功能:抖音福袋')
//判断主页
while (true) {
if (!desc("更多面板 按钮").visibleToUser().exists()) {
jlog('请在直播间运行')
} else { break }
sleep(1500)
}
while (true) {
jlog("抖音直播间已打开")
sleep(3000)
if (!descContains('超级福袋').visibleToUser().exists()) {
swipe_downUp(true)
sleep(3000)
jlog("未发现超级福袋")
} else {
jlog("超级福袋......")
sleep(1000)
break
}
}
// =========================
while (true) {
if (desc('活动已结束').visibleToUser().exists()) { back(); clog('活动结束,返回'); }
sleep(300)
if (descContains('参与成功').visibleToUser().exists()) { back(); jlog('参与成功,等待开奖'); }
sleep(300)
if (descContains('我知道了').visibleToUser().exists()) { back(); clog('我知道了,返回'); }
sleep(300)
if (desc('一键发表评论').visibleToUser().exists()) {
clickCoords('desc', '一键发表评论', true);
clog('一键发表评论');
++number
}
sleep(300)
if (descContains('超级福袋').visibleToUser().exists()) { clickCoords('desc', '超级福袋', true); jlog('点击超级福袋'); }
var timeUp = timeStamp();
var record = timeUp - timeStart
dlog("当前版本:" + getVerName(app.getPackageName('抖音')) + ' 执行分钟: ' + (record / 60).toFixed(1) + ' / ' + myapp.time + ' 参与次数: ' + number + ' / ' + myapp.count);
if (number >= parseInt(myapp.count)) {
sleep(300)
tlog('停止运行')
console.hide()
alert("运行完毕");
sleep(300)
exit()
return
}
}
}
function 普通福袋() {
let number = 0
// 记时开始
let timeStart = timeStamp();
dlog("当前版本:" + getVerName(app.getPackageName('抖音')) + ' 执行分钟: ' + 0 + ' / ' + myapp.time + ' 参与次数: ' + 0 + ' / ' + myapp.count);
jlog('执行功能:抖音普通福袋')
//判断主页
while (true) {
if (!desc("更多面板 按钮").visibleToUser().exists()) {
jlog('请在直播间运行')
} else { break }
sleep(1500)
}
while (true) {
jlog("抖音直播间已打开")
sleep(3000)
if (!descStartsWith('福袋').visibleToUser().findOnce()) {
swipe_downUp(true)
sleep(3000)
jlog("未发现普通福袋")
} else {
jlog("福袋......")
sleep(1000)
break
}
}
// =========================
while (true) {
if (desc('活动已结束').visibleToUser().exists()) { back(); clog('活动结束,返回'); }
sleep(300)
if (descContains('参与成功').visibleToUser().exists()) { back(); jlog('参与成功,等待开奖'); }
sleep(300)
if (descContains('我知道了').visibleToUser().exists()) { back(); clog('我知道了,返回'); }
sleep(300)
if (textContains('已参与').visibleToUser().exists()) { back(); clog('已参与,返回'); }
sleep(300)
if (textContains('去发表评论').visibleToUser().exists()) {
clickCoords('text', '去发表评论', true);
sleep(2000)
clickCoords("desc", '发送', true)
clog('去发表评论');
++number
}
sleep(300)
if (descStartsWith('福袋').visibleToUser().findOnce()) {
var w = descStartsWith('福袋').visibleToUser().findOnce().bounds()
click(w.centerX(), w.centerY())
sleep(500)
jlog('点击福袋');
}
var timeUp = timeStamp();
var record = timeUp - timeStart
dlog("当前版本:" + getVerName(app.getPackageName('抖音')) + ' 执行分钟: ' + (record / 60).toFixed(1) + ' / ' + myapp.time + ' 参与次数: ' + number + ' / ' + myapp.count);
if (number >= parseInt(myapp.count)) {
sleep(300)
tlog('停止运行')
console.hide()
alert("运行完毕");
sleep(300)
exit()
return
}
}
}
//下滑
function swipe_downUp(Vertical) {
let x = device.width / 2
let y1 = parseInt(device.height * 0.8)
let y2 = parseInt(device.height * 0.1)
if (Vertical) {
gesture(random(500, 800), [x + random(-30, 30), y1], [x + random(-30, 30), y1 - 200], [x + random(-20, 20), y1 - 400], [x + random(-20, 20), y2])
} else {
gesture(random(500, 800), [x + random(-30, 30), y2 + 100], [x + random(-30, 30), y2 + 300], [x + random(-20, 20), y2 + 500], [x + random(-20, 20), y1])
}
}
function timeStamp() {
return Date.parse(new Date()) / 1000;
}
//随机秒数
function getRandom(min, max) {
// console.log("停留:" + random(parseInt(min), parseInt(max)) + " 毫秒");
return random(parseInt(min), parseInt(max))
}
function clickCoords(type, value, isContain) {
if (isContain) {
switch (type) {
case "id":
try {
var w = idContains(value).visibleToUser().findOnce().bounds()
click(w.centerX(), w.centerY())
sleep(500)
return true
} catch (e) { console.log(e); return false }
case "text":
try {
var w = textContains(value).visibleToUser().findOnce().bounds()
click(w.centerX(), w.centerY())
sleep(500)
return true
} catch (e) { console.log(e); return false }
case "desc":
try {
var w = descContains(value).visibleToUser().findOnce().bounds()
click(w.centerX(), w.centerY())
sleep(500)
return true
} catch (e) { console.log(e); return false }
default:
return false
}
} else {
switch (type) {
case "id":
try {
var w = id(value).visibleToUser().findOnce().bounds()
click(w.centerX(), w.centerY())
sleep(500)
return true
} catch (e) { console.log(e); return false }
case "text":
try {
var w = text(value).visibleToUser().findOnce().bounds()
click(w.centerX(), w.centerY())
sleep(500)
return true
} catch (e) { console.log(e); return false }
case "desc":
try {
var w = desc(value).visibleToUser().findOnce().bounds()
click(w.centerX(), w.centerY())
sleep(500)
return true
} catch (e) { console.log(e); return false }
default:
return false
}
}
}
//软件版本
function getVerName(package_name) {
let pkgs = context.getPackageManager().getInstalledPackages(0).toArray();
for (let i in pkgs) {
if (pkgs[i].packageName.toString() === package_name) return pkgs[i].versionName;
}
}
//===============
function 日志显示(x, y, is) {
if (typeof x != 'number') x = 0;
if (typeof y != 'number') y = 10;
let floatyLogW = floaty.rawWindow(
<card id="main" marginLeft="3" h="150" cardBackgroundColor='#b3000000' cardCornerRadius="8dp" cardElevation="1dp" gravity="center_vertical">
<vertical padding="5 5 5 0" w='*'>
<button layout_gravity="center" id='顶层显示' textSize="11dp" textColor="#20B2AA" style="Widget/AppCompat.Button.Borderless" textStyle='bold'
layout_width="wrap_content" layout_height="15dp" />
<button gravity="center_horizontal" textColor="#DC143C" w="*" h="13" textStyle='bold' marginBottom="3" />
<vertical padding="5 0">
<button id='log1' textSize="12dp" textColor="#FFF5EE" style="Widget/AppCompat.Button.Borderless" textStyle='normal'
layout_gravity="left" layout_width="wrap_content" layout_height="15dp" />
<button id='log2' textSize="12dp" textColor="#FFF5EE" style="Widget/AppCompat.Button.Borderless" textStyle='normal'
layout_gravity="left" layout_width="wrap_content" layout_height="15dp" />
<button id='log3' textSize="12dp" textColor="#FFF5EE" style="Widget/AppCompat.Button.Borderless" textStyle='normal'
layout_gravity="left" layout_width="wrap_content" layout_height="15dp" />
<button id='log4' textSize="12dp" textColor="#FFF5EE" style="Widget/AppCompat.Button.Borderless" textStyle='normal'
layout_gravity="left" layout_width="wrap_content" layout_height="15dp" />
<button id='log5' textSize="12dp" textColor="#FFF5EE" style="Widget/AppCompat.Button.Borderless" textStyle='normal'
layout_gravity="left" layout_width="wrap_content" layout_height="15dp" />
<button id='log6' textSize="12dp" textColor="#FFF5EE" style="Widget/AppCompat.Button.Borderless" textStyle='normal'
layout_gravity="left" layout_width="wrap_content" layout_height="15dp" />
<button id='log7' textSize="12dp" textColor="#FFF5EE" style="Widget/AppCompat.Button.Borderless" textStyle='normal'
layout_gravity="left" layout_width="wrap_content" layout_height="15dp" />
</vertical>
</vertical>
</card>
);
控制按钮 = floaty.rawWindow(
<vertical h="150">
<text layout_weight="5" id="启动" textStyle="bold" gravity="center" w="22" text="启动" bg="#00a86b" />
<text layout_weight="5" id="隐藏" textStyle="bold" gravity="center" w="22" text="日志" bg="#FF8E12" />
<text layout_weight="5" id="结束" textStyle="bold" gravity="center" w="22" text="结束" bg="#d71345" />
</vertical>
);
let arr = []
arr[0] = floatyLogW.log1
arr[1] = floatyLogW.log2
arr[2] = floatyLogW.log3
arr[3] = floatyLogW.log4
arr[4] = floatyLogW.log5
arr[5] = floatyLogW.log6
arr[6] = floatyLogW.log7
let islog = []
let i = 0
let thread = null
tlog = function (msg) {
msg = '[' + dateFormat(new Date(), "HH:mm:ss") + '] >> ' + msg
let 余数 = msg.length % 40
let 运算结果 = parseInt(msg.length / 40)
if (余数 > 0) {
运算结果++
}
let x = 40
for (let ii = 0; ii < 运算结果; ii++) {
let ks = ii * 40
let js = x
let obj = {}
obj.is = msg.slice(ks, js)
obj.color = colors.rgb(255, 255, 255)
islog.push(obj);
x = x + 40
}
ui.run(() => {
let 数组长度 = islog.length
if (数组长度 > 7) {
let 裁剪长度 = 数组长度 - 7
islog = islog.slice(裁剪长度);
// log('数组长度:' + islog.length)
for (let s = 0; s < islog.length; s++) {
arr[s].setTextColor(islog[s].color)
arr[s].text(' ' + islog[s].is)
if (is) log(islog[s].is)
}
} else {
for (let s = 0; s < islog.length; s++) {
arr[s].setTextColor(islog[s].color)
arr[s].text(' ' + islog[s].is)
if (is) log(islog[s].is)
}
}
})
}
jlog = function (msg) {
msg = '[' + dateFormat(new Date(), "HH:mm:ss") + '] >> ' + msg
let 余数 = msg.length % 40
let 运算结果 = parseInt(msg.length / 40)
if (余数 > 0) {
运算结果++
}
let x = 40
for (let ii = 0; ii < 运算结果; ii++) {
let ks = ii * 40
let js = x
let obj = {}
obj.is = msg.slice(ks, js)
obj.color = colors.rgb(255, 255, 0)
islog.push(obj);
x = x + 40
}
ui.run(() => {
let 数组长度 = islog.length
if (数组长度 > 7) {
let 裁剪长度 = 数组长度 - 7
islog = islog.slice(裁剪长度);
// log('数组长度:' + islog.length)
for (let s = 0; s < islog.length; s++) {
arr[s].setTextColor(islog[s].color)
arr[s].text(' ' + islog[s].is)
if (is) log(islog[s].is)
}
} else {
for (let s = 0; s < islog.length; s++) {
arr[s].setTextColor(islog[s].color)
arr[s].text(' ' + islog[s].is)
if (is) log(islog[s].is)
}
}
})
}
clog = function (msg) {
msg = '[' + dateFormat(new Date(), "HH:mm:ss") + '] >> ' + msg
let 余数 = msg.length % 40
let 运算结果 = parseInt(msg.length / 40)
if (余数 > 0) {
运算结果++
}
let x = 40
for (let ii = 0; ii < 运算结果; ii++) {
let ks = ii * 40
let js = x
let obj = {}
obj.is = msg.slice(ks, js)
obj.color = colors.rgb(255, 0, 0)
islog.push(obj);
x = x + 40
}
ui.run(() => {
let 数组长度 = islog.length
if (数组长度 > 7) {
let 裁剪长度 = 数组长度 - 7
islog = islog.slice(裁剪长度);
// log('数组长度:' + islog.length)
for (let s = 0; s < islog.length; s++) {
arr[s].setTextColor(islog[s].color)
arr[s].text(' ' + islog[s].is)
if (is) log(islog[s].is)
}
} else {
for (let s = 0; s < islog.length; s++) {
arr[s].setTextColor(islog[s].color)
arr[s].text(' ' + islog[s].is)
if (is) log(islog[s].is)
}
}
})
}
dlog = function (printContent) {
ui.run(() => {
// floatyLogW.顶层显示.setTextColor(colors.parseColor("#c37e00"))
floatyLogW.顶层显示.text(' ' + printContent)
})
}
function dateFormat(date, fmt_str) {
return java.text.SimpleDateFormat(fmt_str).format(new Date(date || new Date()));
}
ui.run(() => {
floatyLogW.setTouchable(false);
floatyLogW.setSize(-1, -2);
floatyLogW.setPosition(3000, 3000)
控制按钮.setPosition(0, y);
控制按钮.结束.click(() => {
toast("结束脚本运行");
exit()
});
控制按钮.隐藏.click(() => {
if (控制按钮.隐藏.text() == "隐藏") {
floatyLogW.setPosition(3000, 3000)
控制按钮.隐藏.setText("日志")
控制按钮.隐藏.attr("background", "#FF8E12");
} else if (控制按钮.隐藏.text() == "日志") {
控制按钮.隐藏.setText("隐藏")
控制按钮.隐藏.attr("background", "#d1c7b7");
floatyLogW.setPosition(x + 20, y);
}
});
控制按钮.启动.click(() => {
if (thread ? !thread.isAlive() : true) { //线程没有运行。
控制按钮.启动.setText("暂停");
控制按钮.启动.attr("background", "#05a7f4");
//新建一个线程,赋值给变量thread
thread = threads.start(function () {
try {
if(run_type == "超级福袋") {
Main();
} else {
普通福袋();
}
} catch (e) { console.log("程序启动失败");console.log(e) };
//运行完毕修改按钮文字
ui.run(() => { 控制按钮.启动.setText("启动"); })
});
} else {
thread.interrupt();
//中断线程;
控制按钮.启动.setText("启动");
控制按钮.启动.attr("background", "#00a86b");
};
});
})
};
//====================
function 保存界面配置() {
// 执行数
保存本地数据(myapp.存储标识, "count", ui.count.text())
};
function 读取界面配置(是否设置组件值) { //逻辑值 是否设置组件值
// 点赞数
if (读取本地数据(myapp.存储标识, "count") != undefined) {
myapp.count = 读取本地数据(myapp.存储标识, "count")
};
是否设置组件值 && ui.count.setText(myapp.count);
};
function 保存本地数据(存储标识, ID, 界面组件值) {
const storage = storages.create(存储标识); //创建storage对象
storage.put(ID, 界面组件值);
};
function 读取本地数据(存储标识, ID) {
const storage = storages.create(存储标识); //创建storage对象
if (storage.contains(ID)) {
return storage.get(ID, "");
};
//默认返回undefined
};