PPT - 앱 인벤터 2
Download
Report
Transcript PPT - 앱 인벤터 2
PART 1
앱 인벤터 프로젝트
09 실로폰
음악 앱
이제 음악은 보편적인 기술이 됨
음악 신시사이저, CD, 샘플링과 리믹싱
스마트폰 앱
인터넷 음악 방송 등
무엇을 만드는가?
책의 저자 중 한 명인 리츠 루니가 개발한
<실로폰> 앱의 기능
색으로 구분된 여덟 개의 건반(버튼)을 눌러 실로폰
연주
연주 자동 녹음
[연주] 버튼을 눌러 녹음해둔 곡을 다시 듣기
[지우기] 버튼을 눌러 녹음된 곡을 지움
무엇을 배우는가?
<실로폰> 앱을 만들며 배우는 것들
하나의 Sound 컴포넌트로 여러 가지 소리 파일을 연주
Clock 컴포넌트로 음 사이의 지연 시간을 측정하고 설정함
프로시저 제작이 필요한 시기를 판단
자기 자신을 호출하는 재귀 프로시저
항목 추가, 항목 접근, 리스트 비우기 등의 고급 리스트 사용법
컴포넌트 설계
건반 버튼 만들기
도와 레 건반 만들기
두 개의 버튼(Button1과 Button2)을 끌어옴
• BackgroundColor는 Magenta(Button1), Red(Button2)
• Text는 “도”(Button1), “레”(Button2)
• Width는 Fill parent
• Height는 40 화소
Sound 컴포넌트 추가
Sound 컴포넌트 속성 설정
MinimumInterval을 0으로 바꿈
기본값 500으로 두면, 500밀리 초(0.5초)가 지나고 다음 건반을 눌러야 소리가 남
소리 파일 다운로드
• http://appinventor.org/bookFiles/Xylophone/1.wav
• http://appinventor.org/bookFiles/Xylophone/2.wav
소리 파일 이름을 1.wav와 2.wav 그대로 둠
나중에 깨닫겠지만 그렇게 해야 프로그래밍이 쉬움
버튼에 소리 연결해 주기
버튼을 누르면 소리가 나도록 프로그래밍
두 버튼이 유사한 코드 반복 프로시저로 작성함이 바람직함
리팩토링
안드로이드에게 소리 파일 적재 명령하기
소리 파일을 연주하는 중에 지연 발생
소리 파일을 실행 도중에 읽어오므로 연주하기까지 지연 시간 발생함
Sound 컴포넌트의 Source 속성에 설정해두면 해결됨
나머지 건반 구현하기
나머지 건반 구현하기
Text와 BackgroundColor 속성
나머지 건반 구현하기
녹음하고 재생하기
재생 기능 구현
연주된 음을 순서대로 기억해야 함
• 음에 해당하는 소리 파일 이름
• 음 사이의 지연 시간 지연 시간은 Clock 컴포넌트로 측정
두 개의 리스트에 저장
• notes: 음에 해당하는 소리 파일 이름 저장
• times: 버튼이 클릭된 시간 저장
음과 시간 기록하기
이전 PlayNote에
추가한 코드
음과 시간 기록하기
[지우기] 버튼
연주 재생하기
실행 과정
count 변수는 몇 번째 음을 재생하고 있는지 나타냄
PlayButton.Click은 녹음된 연주가 있는지 (length of list가 0보다 큰지) if 문으로 확인
• 녹음 기록이 있으면 count를 1로 설정하고 PlaybackNote 호출
PlayBackNote 프로시저는 현재 음을 연주한 다음, 자기 자신을 호출하여 다음 음으로 진
행 재귀 프로시저
연주 재생하기
프로그램은 어떻게 작동하는가?
사용자가 “도미라”를 눌렀다고 가정 (리스트에 1.wav, 3.wav, 6.wav가 들어있음)
[연주] 버튼이 클릭되면, count=1이 되고 PlayBackNote가 호출됨
연주 재생하기
프로그램은 어떻게 작동하는가?
적절한 시간 지연을 두는 재생하기
Clock 컴포넌트를 사용하여 적절한 시간 지연을 두어야 제대로 된 재생
지연 시간은 현재 음의 시간과 그 다음 음의 시간을 Clock1.Duration의 start와 end에
끼워 계산
TimerEnabled를 true(활성화) 또는 false(비활성화)로 바꾸는 시점에 주목바람
적절한 시간 지연을 두는 재생하기
프로그램은 어떻게 작동하는가?
리스트에 다음 내용이 있다고 가정하고, 프로그램 동작을 단계별로 살펴보기
• Notes: 1.wav, 3.wav, 6.wav
• Times: 12:00:00, 12:00:01, 12:00:04
PlayButton.Click은 count를 1로 두고, PlaybackNote를 호출
적절한 시간 지연을 두는 재생하기
프로그램은 어떻게 작동하는가?
전체 앱 프로그램
전체 앱 프로그램
확장해 보기
감사합니다.