본문 바로가기

개인 프로젝트/앱인벤터

앱인벤터 9장 확장해보기

[문제 1] 재생 중에 사용자가 [지우기] 버튼을 누르면 어떤 일이 벌어질까? 프로그램 오류가 발생하면서 앱이 멈추어 버릴 것이다. 이를 실행해 보고, 왜 그러는지 곰곰이 생각해 보자. 이 문제를 해결하기 위해서는 음악이 재생되기 시작하면 [지우기] 버튼을 불능으로 설정하는 방법이 있다. PlayButton.Click의 적절한 곳에 [지우기] 버튼을 불능으로 만드는 블록을 추가해 보자. 그렇다면 어디에서 [지우기] 버튼을 다시 살려야 할까?







[문제 2] [연주] 버튼도 비슷하다. 재생 중에 사용자가 [연주] 버튼을 클릭하면 무슨 일이 벌어질지 생각해 본다. 적절한 곳에서 [연주] 버튼을 불느응로 만들고, 친절하게 "연주 중입니다."라는 메시지를 보여주자. 어디에서 [연주] 버튼을 다시 살려야 할까?







[문제 3] "엘리제를 위하여"와 같이 음악의 제목이 들어간 버튼을 추가한다. 사용자가 버튼을 누르면, 미리 만들어 놓은 음과 시간 지연을 리스트에 대입한 후 PlayBackNote 프로시저를 호출하여 재생한다. Clock1.MakeInstantFromMillis 블록은 적절한 시간 지연을 알아내는 데 도움이 된다







[문제 4] 사용자가 연주를 하다가 자리를 비워야 할 때, 앱을 그 상태로 둔 채 나갔다가 돌아와 연이어 연주를 하더라도 하나의 노래로 녹음이 된다. 하지만 중간에 지연된 시간까지 그대로 녹음되는 것은 사용자도 원하지 않을 것이다. 이때 프로그램을 다음과 같이 개선해 보자. (1) 중간에 일정한 시간 이상, 예를 들어 1분 이상 지연이 발생하면 녹음을 멈춘다. (2) Math 서랍에 있는 min 블록을 이용하여, Clock1.TimerInterval의 값에 제한을 둔다. 







[문제 5] 현재 연주되고 있는 건반의 버튼 모양에 독특한 시각 효과를 주어 어느 건반이 연주되는지를 보여주자. 예를 들어, Text 또는 BackgroundColor, ForegroundColor 등을 잠시 바꾸어 주는 방법이 있다





<출처: David Wolber, Hal Abelson, Ellen Spertus, Liz Looney. 앱인벤터2>