Screen2에서 Screen3 정보 받기

Screen2가 Screen3에서 만든 글귀를 받기 위해 열려 있던것 기억하시죠?
글귀는 다 만들었으니 이제 Screen2로 전달해 줍시다.

Screen3가 남겨 놓은 유물을 받아라

Screen3의 우측 상단에 완료 버튼을 누르면, Screen3 밑에 있는 Screen2가 보일 것입니다.
하지만 그냥 보이는게 끝이 아니죠? Screen3는 꺼지며 글을 남기고, Screen2는 남긴 글을 받아야 합니다.
방금과 같은 기능을 “close screen with value” 블록을 사용하여 구현할 수 있습니다.

자~ 그럼 우리는 넘길 목록(Text, Size, Color)을 리스트로 정리하여 넘길 준비를 하고 넘깁시다.

자 Screen2는 Screen3가 닫고 유물을 남겨주는지 모르고 있습니다. 이를 알도록 할 수 있는
“when Screen2.OtherScreenClosed”블록이 있습니다.
우선 Screen2로 넘어가서 아래 그림과 같이 “when Screen2.OtherScreenClosed”블록을 찾습니다.
이 블록을 사용하여, 아래와 같이 완성합니다.

이 블록은 Screen3가 닫아졌을 때, Screen2가 넘겨받은 정보를 전역변수(global variable) TagList에
저장하는 역할을 합니다.

Canvas를 클릭 할 때, Tag 붙이기

이제 Screen2에서 Canvas를 클릭하면, Tag를 붙이는 기능을 완성해 봅시다.
Blocks 구역에 Canvas1을 클릭하여 “when Canvas1.Touched” 블록을 사용합니다.
“when Canvas1.Touched” 블록의 지역변수(local variable) x, y는 Touch한 손가락의 x, y좌표를 담고 있는 변수 입니다.

자 이제 Canvas에 Tag를 만들 준비를 합시다. 저번시간에 알려 드린것과 같이 Cansvas위에는 label이 올라 갈 수 없습니다.
그렇기 때문에 Canvas 자체에서 글을 적는 기능을 제공하는지 알아 봅시다.

Canvas에는 “call Canvas1. DrawText” 블록을 통해 글씨를 쓸 수 있습니다.(캔버스 위에 글씨를 그리는 개념이죠)
text 칸에는 글 내용이, x, y에는 글을 쓸 x, y 좌표가 입력되어야 합니다.

그리고 글의 크기와 색은 “set Canvas1.FontSize” “set Canvas1.PaintColor”블록을 통해 지정할 수 있습니다.

List가 없는데(Screen3에서 넘겨준 내용이 없을 때) list를 불러오면 에러가 발생합니다. 이를 방지하기 위해
If문으로 TagList에 내용이 존재하는지 확인한 후
Canvas에 글씨를 표현합니다.

Delete Tag 버튼 만들기

Delete Tag 버튼을 누르면, Canvas1에 붙은 태그를 모두 지우고 싶습니다.
이는 Blocks 구역의 Canvas1을 클릭하여 "call Canvas1.Clear" 블록을 사용하여 구현할 수 있습니다.

아! 이제 다 만들었습니다.
그런데...정말 끝났다고 생각했나요??
아닙니다. 끝마치기 전에 꼭 알려드리고 싶은게 있어요!
다음 페이지로 갑시다.

댓글