‘2013 정보영재교육세미나 HTML5 CANVAS HTML5 캔버스 소개 지도 : 김태영 교수님 발표자 : 김병조.

Slides:



Advertisements
Similar presentations
일정 관리 다이어리 제작 JSP Programming with a Workbook. 학습 목표  사용자의 일정을 관리할 수 있는 다이어리에 대하여 알아보자. JSP Programming with a Workbook2.
Advertisements

Python Essential 세미나 1 CGI 프로그램 작성법 발표자 : 박승기 ( 수 )
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
Chapter04 캔버스(2) HTML5 Programming.
Canvas 2D Basics.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Image & Video processing
5강. Servlet 본격적으로 살펴보기-I 프로젝트 만들기 doGet() doPost()
윤 홍 란 다이알로그(대화상자) 윤 홍 란
공통 컨트롤의 종류와 특징을 개관한다. 각종 공통 컨트롤의 사용 방법을 익힌다..
forms 객체 입력상자 체크상자, 라디오 버튼 목록상자
Chapter05 오디오와 비디오 HTML5 Programming.
Visual Basic 함수.
마우스(Mouse) 다루기 컴퓨터응용 및 실습 I.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Communication and Information Systems Lab. 황재철
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Javascript Basic Sample Programs
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
홈페이지용 그림 활용법 그림 삽입 태그 <IMG> 배경 그림 다루기 그림과 문자열의 어울림
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
6장. printf와 scanf 함수에 대한 고찰
컴퓨터 프로그래밍 : 실습3 2장 데이터와 식.
10장. 예외처리.
스크래치 언어 이해 스크래치 이용법 습득 고양이가 말을 하며 움직이는 예제 작성
C#.
13. 연산자 오버로딩.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
인터넷응용프로그래밍 JavaScript(Intro).
Chapter03 캔버스(1) HTML5 Programming.
Chapter10 드래그 앤 드롭 & 텍스트 편집 HTML5 Programming.
10장 tkinter로 GUI 만들기.
2018년 11월 05일 박성진 Web & Internet [08] 레이아웃 P1 2018년 11월 05일 박성진
HTML5 Canvas 태그 92팸 유승연 안동찬 엄태인 김영재.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Nessus 4 설치 정보보호응용 조용준.
1장. HTML5 소개 To Flash 정보영재세미나 1 김태영교수님 홍창의.
웹디자인
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Chapter 08. 함수.
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
청각장애인용 APP 구성 및 사용법.
5 함수.
에어 PHP 입문.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
05. 그래픽 빨간색 사각형 그리기 그래픽 그리기 발 표 자 : 07 정 경 오.
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
Chapter 10 데이터 검색1.
12 그리드 시스템.
함수, 모듈.
웹과 모바일 홈페이지의 이해와 제작 폰트_레이아웃
9 브라우저 객체 모델.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
Learning HTML5 Canvas #2 Jeon Yong ju.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
7 생성자 함수.
6 객체.
BoardGame 보드게임 따라가기.
20 XMLHttpRequest.
Presentation transcript:

‘2013 정보영재교육세미나 HTML5 CANVAS HTML5 캔버스 소개 지도 : 김태영 교수님 발표자 : 김병조

1.6 Console.log로 디버깅 1.7 2D 컨텍스트와 현재 상태 정보 1.8 HTML5 캔버스 객체 1.9 GUESS The Letter 예제 1.9.2 게임의 변수 1.9.1 작동원리 1.9.3 initGame() 함수 1.9.4 eventKeyPressed()함수 1.9.5 drawScreen() 함수 1.9.6 캔버스에서 이미지로 변환

1.6 Console.log로 디버깅 Console.log를 지원하는 브라우저 크롬, 오페라, 사파리, 파이어폭스(부가기능) (IE8 이외..) Console.log로 디버깅 예) console.log(“메시지”) Console.log로 디버깅하면 에러 발생함. Console.log 함수를 지원할때만 사용하도록 Debugger.log라는 함수를 만들어서 사용함. var Debugger = function () { }; Debugger.log = function (message) { try { console.log(message); } catch (exception) { return; } }

theCanvas.getContext(“2D”); (0,0) 좌표계 theCanvas.getContext(“2D”); 그리기 동작이 일어나는 장소 (2D 컨텍스트) * 변환 행렬 크기 조절, 회전, 변환 , 이동 * 자르기 영역 Clip()으로 생성 * 컨텍스트의 영역 StrokeStyle, fillStyle, globalAlpha, wineWidth,.... 컴퓨터 화면 (1920,1080)FULL HD 경우

Canvas객체는 <body>안에 <canvas>태그를 넣어서 만든다. 캔버스의 인스턴스를 만드는 코드 1.8 HTML5 캔버스 객체 ` Canvas객체는 <body>안에 <canvas>태그를 넣어서 만든다. 캔버스의 인스턴스를 만드는 코드 var theCanvas = document.createElement(“canvas”); Canvas 객체에는 메서드와 width, height 속성이 있음. width는 폭, height는 높이를 말하는데, 페이지 코드 내에서 변경가능. 즉, 동적으로 캔버스의 크기를 조절 가능함. Canvas객체의 공개 메서드 getContext() : 캔서스에 그릴 때 사용하는 캔버스 2D컨텍스트의 참조값을 구한다. toDataURL() : 지금 그리는 Canvas 객체의 비트맵 이미지의 스트링 정보를 넘긴다. 스크린샷 찍기와 비슷한 기능임.

1.9 Guess the Letter예제 IE8에서의 에러화면 실행화면 컴퓨터가 임의로 선택한 문자를 참가자가 맞추는 게임. 몇 번 추측했는지 알려줌 이미 나온 문자를 나열해서 보여줌 정답이 추측한 알파벳보다 높은지, 낮은지 힌트로 알려줌

다른 함수는 canvasApp()안에서 선언됨 캔버스에 문자를 그릴 때는 drawScreen() 함수 사용. 1.9.1 게임의 작동원리 기본 구조는 Hello World와 같음 canvasApp()이 메인 함수임 다른 함수는 canvasApp()안에서 선언됨 캔버스에 문자를 그릴 때는 drawScreen() 함수 사용.

guesses : 게임 참가자가 문자를 누른 횟수 message : 게임 방법을 설명하는 텍스트를 저장 1.9.2 게임의 변수 guesses : 게임 참가자가 문자를 누른 횟수 message : 게임 방법을 설명하는 텍스트를 저장 letters : 알파벳 문자가 순서대로 들어있는 배열. 게임의 정답을 임의로 고르거나 문자의 상대적 위치를 알아냄. today : 현재날짜. 화면에 날짜를 표시하는 용도 letterToGuess : 참가자가 맞춰야 하는 정답문자 higherOrLower : 추측한 문자와 정답문자를 비교해서 낮으면 Lower를, 높으면 Higher를 갖는다. letterGuessed : 참가자가 이미 추측했던 문자를 저장하는 배열 GameOver : 게임이 끝나기 전에는 false, 게임이 끝나면 True가 되어 화면에 “You Win”이란 메시지를 출력하는 것을 판단하는 데 사용함.

1.9.3 initGame() 함수 var letterIndex=Math.floor(Math.random()*letters.length); letterToguess = letters[letterIndex]; -> 문자 배열에서 임의의 문자를 골라 letterToguess변수에 넣음. window.addEventListner(“keyup”,eventKeyPressed,true); -> window(창)객체가 키보드의 keyup(키를 눌렀다 놓음) 이벤트를 기다리도록 함. 키를 누르면 eventkeyPressed 이벤트 핸들러가 호출된다. initGame()의 전체 코드 function initGame() { var letterIndex = Math.floor(Math.random() * letters.length); letterToGuess = letters[letterIndex]; guesses = 0; lettersGuessed = []; gameOver = false; window.addEventListener("keyup",eventKeyPressed,true); var formElement = document.getElementById("createImageData"); formElement.addEventListener('click', createImageDataPressed, false); drawScreen(); }

if (!gameOver) -> gameOver변수가 false인지 확인함. 1.9.4 eventKeyPressed()함수 (1) if (!gameOver) -> gameOver변수가 false인지 확인함. var letterPressed = String.fromCharCode(e.keyCode); -> 눌러진 키 값을 구해서 letterToGuess의 문자와 같은지 검사하기 위해서 알파벳 문자로 바꿈. letterPressed = letterPressed.toLowerCase(); -> 실수로 캡스록을 눌렀을 때를 대비해 소문자로 변환함. guesses++; -> 추측한 횟수를 한번 늘림. lettersGuessed.push(letterPressed); -> Array.push()-배열의 끝에 아이템을 추가함- 메서드로 방금 입력한 문자를 letterGuessed배열의 끝에 추가함.

7. } else { letterIndex = letters.indexOf(letterToGuess); 1.9.4 eventKeyPressed()함수 (2) if (letterPressed == letterToGuess) { gameOver = true; } -> letterPressed가 letterToGuess와 같으면 게임이 끝남. 7. } else { letterIndex = letters.indexOf(letterToGuess); guessIndex = letters.indexOf(letterPressed); -> letterIndex는 정답인 알파벳 문자의 순서(a면 1, b면 2, ..) guessIndex는 입력한 알파벳 문자의 순서임. IndexOf() 메서드-문자열 안에 해당 문자가 포함되었는지, 위치를 출력함-를 이용함. 8. if (guessIndex < 0) {higherOrLower = "That is not a letter"; } else if (guessIndex > letterIndex) { higherOrLower = "Lower"; } else {higherOrLower = "Higher“;} -> guessIndex가 크면 Lower를, letterIndex가 크면 Higher를 higherOrLower 변수에 넣음. 9. drawScreen(); -> drawScreen() 함수를 호출해서 화면에 그림

여러 변수의 값을 Canvas Text API를 이용해 화면을 그림 1.9.5 drawScreen() 함수 여러 변수의 값을 Canvas Text API를 이용해 화면을 그림 context.textBaseline=“top”; -> 그리드 박스의 맨 위 또는 폰트 모양에서 가장 높은 위치가 기준선이 된다. Context.fillStyle=“#ffffaa”; -> 색깔을 바꿈. context.fillText ("Letters Guessed: " + lettersGuessed.toString(), 10, 260); -> LettersGuessed배열에서 toString() 메서드만 사용하면 콤마로 구분된 배열값이 자동으로 출력됨. if (gameOver) { context.fillStyle = "#FF0000" context.font = "40px _sans"; context.fillText ( "You Got it!", 150, 180);} -> gameOver의 값이 true가 되면 40픽셀로 You Got it 이라고 출력됨.

1.9.6 캔버스에서 이미지로 바꾸기 <form> <input type="button" id="createImageData" value="Export Canvas Image"> </form> -> HTML페이지에서 폼 버튼을 만들고 ID를 createImageData로 지정 var formElement = document.getElementById("createImageData"); -> init()함수 안에서 document객체의 getelementById 메서드로 form요소에 대한 참조값을 구함. formElement.addEventListener('click', createImageDataPressed, false); -> 버튼을 누르는 이벤트에 대한 이벤트 핸들러로 createImageDataPressed()함수를 설정한다. function createImageDataPressed(e) { window.open(theCanvas.toDataURL(),"canavsImage","left=0,top=0,width=" + theCanvas.width + ",height=" + theCanvas.height +",toolbar=0,resizable=0"); } -> canvasAPP() 안에서 createImageDataPressed() 함수를 이벤트 핸들러로 선언한다. window.open()-새창으로 열기-을 할 때 매개변수로 넘길 윈도우 정보 값으로 theCavas.toDataURL()메서드의 리턴값을 넘긴다. 이 값을 넘기면 이미지는 PNG 파일의 형태로 새 윈도우에 출력된다.