Canviar de fons

En aquest bloc veurem com es pot canviar entre els diferents fons d'escenari de forma interactiva, és a dir, com podem fer que l'escenari respongui a accions dels personatges.



Més concretament es pretén donar resposta a les preguntes següents:


  • Com crear botons per fer diferents accions?
  • Com enviar missatges entre els personatges i l'escenari?


Per canviar entre diferents fons ho podem fer per temps, com a l'apartat anterior, o mitjançant uns botons que permetin controlar la navegació. Crearem tres personatges: un per anar endavant, un per anar enrere i un per tornar a la pàgina d'inici:



El botó Següent ha de canviar el fons de l'escenari tot triant-ne el següent. Farem servir la mateixa instrucció que ja hem vist a l'apartat anterior: següent fons de pantalla. Ara bé, tenim un problema ja que aquesta instrucció no hi és dins de la categoria Aspecte del nostre personatge, aquesta instrucció pertany a l'escenari i ara estem programant un personatge. Haurem de trobar un mecanisme per comunicar els personatges i l'escenari. Aquest mecanisme és l'enviament de missatges, del que ja hem parlat en un mòdul anterior. Recordem que les instruccions necessàries les trobarem a la categoria Esdeveniments.


Una vegada hem creat el missatge següent, el codi del botó és força senzill. Simplement hem d'enviar el missatge quan es premi el botó Següent. Així doncs farem servir la instrucció quan es cliqui aquest personatge que trobarem a Esdeveniments:



Hem afegit la instrucció atura aquest programa com a acabament del nostre codi. En aquest cas no és del tot necessari, però és convenient que ens acostumem a definir els acabaments dels blocs de codi.


En enviar aquest missatge, passem a l'escenari la responsabilitat de canviar de fons, que és qui ho sap fer. L'escenari ha d'interceptar aquest missatge i fer la feina. El codi és molt simple, només hem de respondre al missatge següent amb la instrucció següent fons de pantalla. Hem d'anar doncs a l'escenari, triar la pestanya Programes i escriure aquest codi:



Cal que parem atenció en que estem programant també l'escenari, i no només els personatges.


El mateix hem de fer pels altres dos botons de control de la navegació. El botó Inici enviarà el missatge inici i el botó Anterior el missatge anterior.


El codi de resposta del botó Inici ha d'establir el fons de pantalla al primer fons. Hem de fer sevir la instrucció canvia el fons a … de la categoria Aspecte, tot triant el que volem que sigui el primer fons.


Per canviar el fons a l'anterior podríem pensar en fer servir la instrucció anterior fons de pantalla, però aquesta instrucció no existeix a l'Scratch. Ara bé, si mirem bé la instrucció canvia el fons a … veurem que en el desplegable hi ha vàries opcions, entre elles la de fons anterior (previous backdrop).



El codi de resposta al missatge anterior per part de l'escenari seria el següent:



Fixem-nos què passa quan estem al primer fons i anem a l'anterior.


Finalment seria interessant definir un punt d'entrada pel nostre programa que podria ser simplement establir el primer fons de pantalla al primer o forçar l'enviament d'un missatge d'inici. Com que ja tenim definit com anar a la pantalla d'inici, podem fer el codi per començar l'execució del programa de la següent forma: