1use emlite::*;
2
3fn main() {
4 emlite::init();
5 #[allow(non_snake_case)]
6 let mut AudioContext = Val::global("AudioContext");
7 if !AudioContext.as_::<bool>() {
8 println!("No global AudioContext, trying webkitAudioContext");
9 AudioContext = Val::global("webkitAudioContext");
10 }
11
12 println!("Got an AudioContext");
13 let context = AudioContext.new(&[]);
14 let oscillator = context.call("createOscillator", &[]);
15
16 println!("Configuring oscillator");
17 oscillator.set("type", "triangle");
18 oscillator.get("frequency").set::<_, f64>("value", 261.63); let document = Val::global("document");
21 let elem = document.call("createElement", &argv!["BUTTON"]);
22 elem.set("textContent", "Click");
23 let body = document.call("getElementsByTagName", &argv!["body"]).at(0);
24 elem.call(
25 "addEventListener",
26 &argv![
27 "click",
28 Val::make_fn(move |_| {
29 println!("Playing");
30 oscillator.call("connect", &argv![context.get("destination")]);
31 oscillator.call("start", &argv![0]);
32 println!("All done!");
33 Val::undefined()
34 })
35 ],
36 );
37 body.call("appendChild", &argv![elem]);
38}