Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(379)

Side by Side Diff: sky/sdk/example/widgets/piano.dart

Issue 1211913005: Add a sky media service to make it possible to play a sound. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Ready for review Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 import 'package:sky/mojo/net/fetch.dart';
6 import 'package:mojom/media/media.mojom.dart';
7 import 'package:mojom/mojo/url_response.mojom.dart';
8 import 'package:sky/rendering/box.dart';
9 import 'package:sky/rendering/flex.dart';
10 import 'package:sky/theme/colors.dart' as colors;
11 import 'package:sky/widgets/basic.dart';
12 import 'package:sky/mojo/shell.dart' as shell;
abarth-chromium 2015/07/01 17:52:14 Sort pls
13
14 String soundUrl = "http://soundbible.com/grab.php?id=1931&type=wav";
15
16 class Key {
17 Key(this.color);
18
19 Color color;
abarth-chromium 2015/07/01 17:52:13 final?
20 MediaPlayerProxy player;
21
22 void down() {
23 if (player == null)
24 return;
25 player.ptr.seekTo(0);
26 player.ptr.start();
27 }
28
29 void up() {
30 if (player == null)
31 return;
32 player.ptr.pause();
33 }
34 }
35
36 class PianoApp extends App {
37 final List<Map<int, Color>> pallets = [
38 colors.Red,
39 colors.Orange,
40 colors.Yellow,
41 colors.Green,
42 colors.Blue,
43 colors.Purple,
44 ];
45
46 List<Key> keys = [];
abarth-chromium 2015/07/01 17:52:14 final
47
48 PianoApp() {
49 for (var pallet in pallets) {
50 keys.add(new Key(pallet[500]));
51 }
52 loadSounds();
53 }
54
55 loadSounds() async {
56 MediaServiceProxy mediaService = new MediaServiceProxy.unbound();
57 shell.requestService("mojo:yo_mama", mediaService);
abarth-chromium 2015/07/01 17:52:14 mojo:yo_mama -> mojo:sky_viewer
58
59 for (Key key in keys) {
60 MediaPlayerProxy player = new MediaPlayerProxy.unbound();
61 mediaService.ptr.createPlayer(player);
62
63 UrlResponse response = await fetchUrl(soundUrl);
64 await player.ptr.prepare(response.body);
65 key.player = player;
66 }
67 mediaService.close();
68 // Are we leaking all the player connections?
69 scheduleBuild();
70 }
71
72 Widget build() {
73 List<Widget> children = [];
74 for (Key key in keys) {
75 children.add(
76 new Listener(
77 child: new Flexible(
78 child: new Container(
79 decoration: new BoxDecoration(backgroundColor: key.color)
80 )
81 ),
82 onPointerCancel: (_) => key.up(),
83 onPointerDown: (_) => key.down(),
84 onPointerUp: (_) => key.up()
85 )
86 );
87 }
88
89 return new Flex(
90 children,
91 direction: FlexDirection.vertical
92 );
93 }
94 }
95
96 void main() {
97 runApp(new PianoApp());
98 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698