Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Sp02 Final Exam Review: Multimedia Programming in Squeak
myPen := Pen new.
myNotes := #(((c4 1.0 500)) ((d2 2.0 500)) ((e3 1.0 500)) ((f4 1.0 500))).
1 to: 4 do:[:i|
myPen turn: 90.
(AbstractSound noteSequenceOn: (FMSound soundNamed: 'clarinet')
from: (myNotes at: i) ) play.
Question: Why do I need double parenthesis around the notes when I declare it on the second line? It would not compile if I just put one around them.
|Think about what a note sequence is and what you're passing in. Mark Guzdial|
2. No Idea!
|On (b), think about EllipseMorph new openInWorld, position:, bounds:, bounds, extent, and top:/left: messages. Mark Guzdial|
I believe this is because you are qualifying the object with the inner most parens and then qualifying that this object is an element in a collection with the second set of parens. i.e. when defining a Point instance you define (x@y) not x@y, then you have to qualify that object as an instance in the collection so it would be ((x@y)) unlike in the extent example where you're passing to a message so all you need is a Point not a Collection. Is this correct??? Anyone?
| sound |
sound := (AbstractSound noteSequenceOn:
(FMSound soundNamed: 'brass1')
from: OrderedCollection with: aNote ) play.
SoundPlayer waitUntilDonePlaying: sound.
| myNotes ellipseMorph |
myNotes := #((c4 1.0 500) (d4 1.0 500) (e4 1.0 500) (f4 1.0 500)).
ellipseMorph := EllipseMorph new.
ellipseMorph color: Color red.
ellipseMorph bounds: (Rectangle origin: 0@0 extent: 100@100).
self playNote: (myNotes at: 1).
ellipseMorph position: 0@100.
self playNote: (myNotes at: 2).
ellipseMorph position: 100@100.
self playNote: (myNotes at: 3).
ellipseMorph position: 100@0.
self playNote: (myNotes at: 4).
Michael L. Mitchell
While we're at it, why not write an application that makes the Squeak mouse's eyes move to the beat?
Michael L. Mitchell
|Does it work without all those World doOneCycle's? Mark Guzdial|
Link to this Page