BangleApps/apps/demoapp/app.js

172 lines
5.0 KiB
JavaScript
Raw Permalink Normal View History

2020-01-30 17:05:53 +00:00
Bangle.setLCDPower(1);
Bangle.setLCDTimeout(0);
var scenes = [
function() {
y = -100;
var step = 4;
var i = setInterval(function() {
y+=step;
if (y>70) {
clearInterval(i);
2020-01-30 17:05:53 +00:00
i = undefined;
}
g.clearRect(0,y-(step+1),240,y-1);
g.drawImage(Bangle.getLogo(),0,y);
}, 20);
Bangle.setLCDMode();
g.clear();
return function() {
if (i) clearInterval(i);
};
},
function() {
var txt = [" ____ _ \n"+
"| __|___ ___ ___ _ _|_|___ ___ \n"+
"| __|_ -| . | _| | | | | . |\n"+
"|____|___| _|_| |___|_|_|_|___|\n"+
" |_| espruino.com\n\n",
"The JavaScript Interpreter for uCs\n",
" * On-chip JS Interpreter",
" * GPS, Acclerometer, Compass",
" * 64 MHz, 64kB RAM, 512kB + 4MB Flash",
" * 240x240 IPS LCD",
" * Speaker & Vibration motor",
" * Bluetooth LE",
" * 1 week battery life",
"",
"Includes:",
" * Tensorflow AI",
" * Bluetooth LE central & periph",
" * Graphics Library",
" * VT100 terminal",
"","",""
];
2020-01-30 17:05:53 +00:00
var n=0;
var i = setInterval(function() {
Terminal.println(txt[n]);
n++;
if (n>=txt.length) {
clearInterval(i);
i=undefined;
}
}, 200);
Bangle.setLCDMode();
return function() {
if (i) clearInterval(i);
};
},
function() {
Bangle.setLCDMode("120x120");
2020-01-30 17:05:53 +00:00
var img = require("heatshrink").decompress(atob("oNBxH+5wA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHGpAAoQKv4ADCBQAeqsrAAejBw9/B4oABqt/IGepHw5CEQspALH5hBC5pAvv4/MAALFkIBWpPI6IHqpAu0Z3GfYOpRYdPQEhALYIp2FBYNVI4JAvvL4LH0yBYAFJAQQQ5Ay1JAFftBAQBYxCDv+qIGiCHIQiGnIBfOv5BJIQRAyIJkrvKEkIBrFBB4qEGIGRCNYsZAQIQV/IZDEiICRCDQVJAUIQVPC4lVIF6yJQYpAZ5t/FYvNIBepqtVIJGjIDoqBDY2pdYo3DfAhBIQLmpvIcDvIrC5oJEIAhTCGQmj5qgEC4t5e7YrBqt5BI6UFBg15v4XHbQwAQb4oAKv7NKABdVRoYATUAwnICqjZFIMdVE4+jXI4XGYCxBFFZN/M5OpCxUrvJ/ZFYmjvNVAAY+KCwpDBC6YAV5vNC9oA/AH4A/AHYA=="));
g.clear();
y = 0;
var step = 4;
var i = setInterval(function() {
y+=step;
g.clear();
g.drawImage(img,60,60,{rotate:Math.sin(y*0.03)*0.5});
g.flip();
}, 20);
return function() {
if (i) clearInterval(i);
};
2020-01-30 17:05:53 +00:00
},
function() {
var rx = 0, ry = 0;
// draw a cube
function draw() {
var rcx=Math.cos(rx),
rsx=Math.sin(rx),
rcy=Math.cos(ry),
rsy=Math.sin(ry);
2020-01-30 17:05:53 +00:00
// Project 3D coordinates into 2D
function p(x,y,z) {
var t;
t = x*rcy + z*rsy;
z = z*rcy - x*rsy;
x=t;
t = y*rcx + z*rsx;
z = z*rcx - y*rsx;
y=t;
z += 6;
return [240 * (0.5 + x/z), 240 * (0.3 + y/z)];
}
var a;
// draw a series of lines to make up our cube
a = p(-1,-1,-1); g.moveTo(a[0],a[1]);
a = p(1,-1,-1); g.lineTo(a[0],a[1]);
a = p(1,1,-1); g.lineTo(a[0],a[1]);
a = p(-1,1,-1); g.lineTo(a[0],a[1]);
a = p(-1,-1,-1); g.lineTo(a[0],a[1]);
a = p(-1,-1,1); g.moveTo(a[0],a[1]);
a = p(1,-1,1); g.lineTo(a[0],a[1]);
a = p(1,1,1); g.lineTo(a[0],a[1]);
a = p(-1,1,1); g.lineTo(a[0],a[1]);
a = p(-1,-1,1); g.lineTo(a[0],a[1]);
a = p(-1,-1,-1); g.moveTo(a[0],a[1]);
a = p(-1,-1,1); g.lineTo(a[0],a[1]);
a = p(1,-1,-1); g.moveTo(a[0],a[1]);
a = p(1,-1,1); g.lineTo(a[0],a[1]);
a = p(1,1,-1); g.moveTo(a[0],a[1]);
a = p(1,1,1); g.lineTo(a[0],a[1]);
a = p(-1,1,-1); g.moveTo(a[0],a[1]);
a = p(-1,1,1); g.lineTo(a[0],a[1]);
}
// rotate and redraw the cube
function step() {
// rotate
rx += 0.1;
ry += 0.11;
// draw
g.clear();
g.setColor(0xFFFF);
draw();
g.flip();
}
Bangle.setLCDMode("doublebuffered");
g.clear();g.flip();
var i = setInterval(step,50);
return function() {
clearInterval(i);
};
},
function() {
var img = require("heatshrink").decompress(atob("oNBxH+5wA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHGpAAoQKv4ADCBQAeqsrAAejBw9/B4oABqt/IGepHw5CEQspALH5hBC5pAvv4/MAALFkIBWpPI6IHqpAu0Z3GfYOpRYdPQEhALYIp2FBYNVI4JAvvL4LH0yBYAFJAQQQ5Ay1JAFftBAQBYxCDv+qIGiCHIQiGnIBfOv5BJIQRAyIJkrvKEkIBrFBB4qEGIGRCNYsZAQIQV/IZDEiICRCDQVJAUIQVPC4lVIF6yJQYpAZ5t/FYvNIBepqtVIJGjIDoqBDY2pdYo3DfAhBIQLmpvIcDvIrC5oJEIAhTCGQmj5qgEC4t5e7YrBqt5BI6UFBg15v4XHbQwAQb4oAKv7NKABdVRoYATUAwnICqjZFIMdVE4+jXI4XGYCxBFFZN/M5OpCxUrvJ/ZFYmjvNVAAY+KCwpDBC6YAV5vNC9oA/AH4A/AHYA=="));
g.clear();
y = 0;
var step = 4;
var i = setInterval(function() {
y+=step;
g.scroll(0,1);
g.drawImage(img,Math.random()*240,Math.random()*240,
{rotate:Math.random()*6.3, scale:0.5+Math.random()});
2020-01-30 17:05:53 +00:00
}, 1);
Bangle.setLCDMode();
return function() {
if (i) clearInterval(i);
};
}
];
var sceneNo = scenes.length-1;
var stop;
function next() {
2020-01-30 17:05:53 +00:00
sceneNo++;
if (sceneNo>=scenes.length) sceneNo=0;
if (stop) stop();
clearInterval();
2020-01-30 17:05:53 +00:00
stop = scenes[sceneNo]();
setTimeout(next, 10000);
}
next()