Como hacer que el NavidadMorph toque música
Si tipeamos self music en el panel inferior y ejecutamos (do it), nos saldra nuestro amigo el debugger (Ver tutorial PEPITO) Recordar que para continuar programando podemos incorporar a la imagen NonStopDebug.st, que he puesto en elpelotero Si deseamos ganar tiempo, podríamos utilizar el Browser e ingresar todas las variables de instancia que utilizaremos
|
![]() |
Luego de esto , con boton amarillo en el panel de clases h, hacemos que aparezca el menú, y seleccionando , more... aparecerá el segundo menú, aquí seleccionamos create inst var accessors. De esta forma, automáticamente tendremos completos los metodos de acceso. Se denominan setters los métodos que ingresan un "valor" al objeto y getters los que "devuelven" un valor. Recordar que si no existiesen estos métodos, desde el exterior del objeto no habría manera de conocer o alterar estos valores. Ahora sí, terminados los preliminares, veremos como ingresar la música y ejecutarla. Para esto , hay varios métodos posibles. Si hemos tenido la precaución de colocar el archivo midi dentro de la carpeta donde está el Squeak, podemos copiar el método que está a continuación. |
![]() |
![]() |
| chooseMidi | f score fileName | fileName := Utilities chooseFileWithSuffixFromList: #('.mid' '.midi') withCaption: 'Choose a MIDI file to open'. (fileName isNil or: [ fileName == #none ]) ifTrue: [^ self inform: 'No .mid/.midi files found in the Squeak directory']. f := FileStream readOnlyFileNamed: fileName. score := (MIDIFileReader new readMIDIFrom: f binary) asScore. f close. music := ScorePlayer onScore: score |
Así que si dentro del inspector del objeto tipeamos self chooseMidi podemos elegir la música.
A todo esto, si el NavidadMorph ha continuado moviendose (porque todo esto es mas divertido si no paramos la ejecución, todo lo que escribo aquí lo hice con el NavidadMorph desapareciendo por la parte superior de la pantalla), siempre es posible hacer que se mueva a cualquier lugar que deseamos.
A mi me gusta hacer
self center: World center.
self top: World bottom
o combinar en self center: World center x @ World bottom.
Observar que nuestro NavidadMorph no tiene initialize (por ser un Morph derivado de un Morph ya creado previamente)
Pero seria interesante tener un punto de partida..
Por eso podemos usar
| start ScreenController new fullScreenOn. "Para ejecutar a pantalla completa" self top: World bottom. self speed: 1.0. self music reset. self music play. self startStepping. |
Dejo el morph terminado en los archivos del grupo y en el pelotero.
Traten de deducir lo que hace el método step que tiene el NavidadMorph terminado.
Como siempre , son bienvenidas las cartas de amor y las amenazas de muerte en mi casilla de correo.
Voy a cualquier parte del país (y soñemos del exterior) si combinan que alguien me lleve y me traiga y me convidan un choripan y una cerveza.