SlideShare a Scribd company logo
Canvas入門02
Canvasによるデジタル時計制作
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 2
Canvasで
デジタル時計
Copyright Ⓒ Yoshihiro Takahashi 2009 All Rights Reserved. 3
今回の講義内容
• Canvas文字表示を利用して、デジタル時
計を作成
– Canvasによるアニメーションの設定
• setIntervalとCanvas独特のアニメーション設定
– デジタル時計
• Dateオブジェクトによる日時表示
– JS制御文の活用
• 関数や配列などのJSの構文と組み合わせる
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 4
デジタル時計を作りながら
Canvasアニメーションを
学習していこう
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 5
まずは
文字表示
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 6
• 文字表示
– フォント指定
コンテキスト.font = ‘スタイル サイズ ファミリー名’;
記述例:‘bold 20px sans-serif’
– 文字の縁線を描画
コンテキスト.strokeText( 文字, 横位置, 縦位置);
– 文字の塗りつぶし
コンテキスト.fillText( 文字, 横位置, 縦位置);
canvas要素に文字を表示しよう
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 7
Canvas
アニメーション
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 8
• Canvas図形をJavaScriptで動かそう
• 大切なポイント
– 最初に日本語で動き(仕組み)を考えて、その動きを
JavaScriptで翻訳し記述する
・・・という流れです。
そのため、日本語で仕組みを正しく考えられれば、6
割~7割程度の作業は完了したことと同じになります。
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 9
プログラミングの
ポイント
©2014 Yoshihiro Takahashi All Right Reserved. 10
• 英語(外国語)を学習するイメージ
→ つまり理系じゃなくても大丈夫!!
• 英単語の覚える ⇒ 命令などを覚える
• 文法を理解する ⇒ 条件分岐文、繰り返し文
– ただし、理解するためには多くの時間がかかります
• 初めての内容を学習するので、分からないことが多い
– 何度も復習をして、理解を深めてください。
– 英語などの言語も一回では覚えられないのと同じです。
• コンピュータに的確に意思を伝えることが重要
– プログラミング的思考
JS(プログラム言語)を学習するための心構え
©2014 Yoshihiro Takahashi All Right Reserved. 11
プログラミング的思考
• 繰り返し文(ループ文)
– 数ミリ秒間隔に繰り返す
– ?回作業を繰り返す
• 条件分岐文
– if文
• もし ○○の値が△△だったら
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 12
プログラミングのポイント
• 考え方の基本は、
【いつ】 + 【どこ/誰】 + 【どうする】
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 13
プログラミングのポイント
• 考え方の基本は、
【いつ】 + 【どこ/誰】 + 【どうする】
皆さん、来週 一緒にランチしましょう
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 14
皆さん、来週 一緒にランチしましょう
プログラミングのポイント
• 考え方の基本は、
【いつ】 + 【どこ/誰】 + 【どうする】
誰 いつ どうする
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 15
プログラミングのポイント
• 考え方の基本は、
【いつ】 + 【どこ/誰】 + 【どうする】
文字
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 16
プログラミングのポイント
• 考え方の基本は、
【いつ】 + 【どこ/誰】 + 【どうする】
文字 右に動け!!
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 17
プログラミングのポイント
• 考え方の基本は、
【いつ】 + 【どこ/誰】 + 【どうする】
文字 右に動け!!
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 18
プログラミングのポイント
• 【いつ】 + 【どこの/誰】 + 【どうする】
– 数ミリ秒間隔のタイミングで (いつ)
– canvas文字 (どこ/誰)
– X座標を変更 (どうする)
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 19
アニメーション
• 数ミリ秒間隔のタイミングで
– 指定した値のミリ秒間隔で連続で実行
– 「何か」を繰り返し実行し続けたい場合に利用
– 「setInterval」というイベントを使います。
• 設定方法
setInterval(function(){
繰り返しやりたい事;
}, ミリ秒);
即時関数での実行
setInterval(関数名, ミリ秒);
function 関数名(){
繰り返しやりたい事;
}
関数定義での実行
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 20
Canvas(ブラウザ)の動きの考え方
Canvas
0
Y
X
右に動かす = X座標の値を増やす
下に動かす = Y座標の値を増やす
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 21
• 文字表示
コンテキスト. fillText( 文字, 横位置, 縦位置);
canvas要素に文字を移動しよう
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 22
• 文字表示
コンテキスト. fillText( 文字, 横位置, 縦位置);
canvas要素に文字を移動しよう
この数値を変更する
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 23
• 文字表示
コンテキスト. fillText( 文字, 横位置, 縦位置);
canvas要素に文字を移動しよう
setInterval(function(){
ctx.fillText( ‘文字’, 100, 100);
}, 30);
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 24
あれ、
動かない?
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 25
アニメーション
• この記述だと、100を何度も設定している
• 数値を定期的に変更する必要がある
100→101→102→103→104・・・
setInterval(function (){
ctx. fillText( ‘文字’, 100, 100);
}, 30);
26
数値を
変更したい
Copyright Ⓒ Yoshihiro Takahashi 2015 All Rights Reserved.
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 27
変数
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 28
変数について
• 変数とは
– 値を入れるための「入れ物」
– 値(数字など)を変化させたい場合に使用する
– 「 var 変数 」 で、変数の宣言(作成)
– 「 変数 = 値 」で、変数に値を代入
• 記述例
var 変数 = 値 ;
var 変数 = ‘文字’ ; // 文字はシングルクォート ‘’ で囲む
var 変数 = 値, 変数 = ‘文字’; // カンマ, で複数宣言
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 29
ポイント
= 値
代入
「=」は、代入という意味です。
「=」の左側は「入れ物」、「=」の右側は「値」となります
数学の X=Y とは違います
XとYが等しいというイメージを捨てましょう
入れ物
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 30
ここで問題・・・
残像が残る
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 31
canvasアニメーションの
基本
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 32
Canvasアニメーションの基本
更新
クリア
描画
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 33
• 矩形
– 塗られた矩形を描く
コンテキスト. fillRect(x, y, width, height)
– 矩形の輪郭を描く
コンテキスト. strokeRect(x, y, width, height)
– 指定された領域を消去
コンテキスト. clearRect(x, y, width, height)
canvas要素に図形を描画しよう
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 34
今の
問題点は?
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 35
現状の問題点
• 右に行きっぱなし
文字
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 36
現状の問題点
• 右に行ったら、左に戻したい
文字 文字
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 37
条件によって
処理を変えたい
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 38
条件分岐
if
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 39
条件分岐(if文)
if (条件式1) {
実行したい処理;
}
else if (条件式2) {
実行したい処理;
}
else{
実行したい処理;
}
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 40
条件分岐(if文)
if (条件式1) {
実行したい処理;
}
else if (条件式2) {
実行したい処理;
}
else{
実行したい処理;
}
条件式1が成立したとき、
{ }の中を実行する
条件式1が成立せず、
条件式2が成立したとき、
{ }の中を実行する
条件式1と条件式2が
成立しないとき、{ }の
中を実行する
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 41
条件式の設定方法
• 比較演算子
A == B (等しい)
A > B (より大きい)
A < B (より小さい)
A >= B (以上)
A <= B (以下)
A != B (等しくない)
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 42
条件分岐(if文)
if (パソコンの価格 < 5万円) {
パソコンを購入;
}
else{//条件を満たしていないとき
お店から出る;
}
• 普段からifは使っています
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 43
簡単なデジタル時計を
作成してみよう
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 44
時計を制作するには、PCから日時を
取得する必要があります。
日時を取得するJavaScriptの命令は・・・。
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 45
Dateオブジェクト
日時取得の命令
Copyright Ⓒ Yoshihiro Takahashi 2014 All Rights Reserved. 46
Dateオブジェクトとは
• 日付や時刻をしらべることができる。
• 使用方法
– Date.メソッド()
– Date.プロパティ
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 47
日時の取得例
var now = new Date();
var hour = now.getHours();
console.log(hour);
実際に入力して、確認してみよう
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 48
Date()の内容
• Dateオブジェクトを生成
– var now = new Date(); //Dateオブジェクト生成
– var hour = now.getHours(); //時の取得
• 主に取得できるデータ
– getDate():日にちを参照する
– getDay():曜日を参照する(0~6、日曜~土曜)
– getFullYear():4桁の西暦年を参照する
– getHours():現在の時を参照する
– getMilliseconds():ミリ秒(1000=1秒)を参照する
– getMinutes():分を参照する
– getMonth():月を参照する(0~11、1月~12月)
– getSeconds():秒を参照する
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 49
課題
• 時刻を表示してみよう
– 年・月・日・曜日を「/」で、文字連結
時・分・秒の値と「:」を文字連結して表示し
よう
2012/8/16/日
16:35:57
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 50
デジタル時計
• 現在の問題点
?
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 51
デジタル時計
• 時間を動かしたい
アニメーションしよう
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 52
デジタル時計
• 現在の問題点
?
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 53
デジタル時計の特徴
• ゼロの表示
– 0~9までは1桁なので、表示が変になる
• 14:1:5
• 12:13:45
• 1:5:7
• 2008/1/5
• 2007/12/25
– 年を除く各項目の値が0~9の時は前に0を追加
• 14:01:05
• 12:13:45
• 01:05:07
• 2008/01/05
• 2007/12/25
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 54
デジタル時計の特徴
• 年を除く各項目の値が0~9の時は、数字
の前に0を追加してみよう。
– if文を使うと簡単です。
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 55
デジタル時計の特徴
• 年を除く各項目の値が0~9の時は、数字
の前に0を追加してみよう。
– if文を使うと簡単です。
– でも、月,日,時,分,秒の5つも似たよう
な処理を書くのは面倒・・・
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 56
課題
• 各項目の値が0~9の時は、数字の前に0
を追加してみよう・・・Part 2
– 関数を作成して、1つの処理にまとめましょう。
• 関数の内容は、先ほど説明したif文です。
– 関数は、「作ること」と「使うこと」は別に
なりますので、注意してください。
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 57
function:処理をまとめる
• ユーザーが事前に設定できる、命令文です。
実行処理の再利用、一元管理するのに有効です。
関数は、「作ること」と「使うこと」は別になりますので、
勘違いしないよう気をつけてください。
function 関数名(引数1,引数2,・・){
実行したい処理;
・・・
return 戻り値;
}
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 58
もう少し高速動作
を意識する
学習のためにifとfunctionを確認しました
日時取得の命令
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 59
デジタル時計の桁調整
• sliceによる文字の切り取り
– sliceの使用例 → 文字.slice(開始位置)
var a = 123456789;
a.slice(3); → 3456789
a.slice(-2); → 89
– 日時の場合
var hour = now.getHours();
( ‘0’ + hour).slice(-2);
// hourが5の場合05、25の場合025→25
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 60
曜日を簡単に
表示する
日時取得の命令
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 61
曜日を簡単に表示する
• ifの場合 → 記述が長い
var day = now.getDay();
if(day == 0){
//日曜表示
}else if(day == 1){
//月曜表示
} else if(day == 2){
//火曜表示
}
・・・・・
Copyright Ⓒ Yoshihiro Takahashi 2014 All Rights 62
そこで配列!!
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 63
曜日を簡単に表示する
• 配列を利用
– CDケースみたいなもの・・・です。
Copyright Ⓒ Yoshihiro Takahashi 2014 All Rights Reserved. 64
配列
• オブジェクトを作成します。
var a = new Array();
例 a[0] = 100;
a[1] = 200;
a[2] = 300;
Copyright Ⓒ Yoshihiro Takahashi 2014 All Rights Reserved. 65
配列の特徴
• []の中に変数が使える
a[ 変数 ]
Copyright Ⓒ Yoshihiro Takahashi 2014 All Rights Reserved. 66
配列
• 記述例
var a = new Array();
a[0] = ‘ABC’;
a[1] = ‘DEF’;
a[2] = ‘GHI’;
var a = new Array(‘ABC’, ‘DEF’, ‘GHI’);
Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 67
続きは、
Canvas入門03
アナログ時計作成へ・・・

More Related Content

Similar to Canvasによるデジタル時計制作入門

openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001
Teruaki Tsubokura
 
R高速化
R高速化R高速化
R高速化
Monta Yashi
 
WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。
Yossy Taka
 
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
Yossy Taka
 
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
kyoto university
 
【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門
Unity Technologies Japan K.K.
 
Goコンパイラのきもち
GoコンパイラのきもちGoコンパイラのきもち
Goコンパイラのきもち
mjhd-devlion
 
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII
 
Html5勉強会資料 2012821
Html5勉強会資料 2012821Html5勉強会資料 2012821
Html5勉強会資料 2012821
Cohei Aoki
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
 
MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針
NTT Software Innovation Center
 
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
Kentaro Matsumae
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
 
Hands on
Hands onHands on
Hands on
Keiji Kamebuchi
 
JavaScript 非同期処理 入門
JavaScript非同期処理 入門JavaScript非同期処理 入門
JavaScript 非同期処理 入門
Ishibashi Ryosuke
 
[iOS8] 新たな線形代数ライブラリ Linear Algebra
[iOS8] 新たな線形代数ライブラリ Linear Algebra[iOS8] 新たな線形代数ライブラリ Linear Algebra
[iOS8] 新たな線形代数ライブラリ Linear Algebra
Yuichi Adachi
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
 
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiJavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
 

Similar to Canvasによるデジタル時計制作入門 (20)

openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001
 
R高速化
R高速化R高速化
R高速化
 
WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。
 
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
 
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
 
【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門
 
Goコンパイラのきもち
GoコンパイラのきもちGoコンパイラのきもち
Goコンパイラのきもち
 
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
 
Html5勉強会資料 2012821
Html5勉強会資料 2012821Html5勉強会資料 2012821
Html5勉強会資料 2012821
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針
 
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
Hands on
Hands onHands on
Hands on
 
JavaScript 非同期処理 入門
JavaScript非同期処理 入門JavaScript非同期処理 入門
JavaScript 非同期処理 入門
 
[iOS8] 新たな線形代数ライブラリ Linear Algebra
[iOS8] 新たな線形代数ライブラリ Linear Algebra[iOS8] 新たな線形代数ライブラリ Linear Algebra
[iOS8] 新たな線形代数ライブラリ Linear Algebra
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
Kinect kihonnoki
Kinect kihonnokiKinect kihonnoki
Kinect kihonnoki
 
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiJavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
 

More from Yossy Taka

WebサイトへのYotutube動画の設置
WebサイトへのYotutube動画の設置WebサイトへのYotutube動画の設置
WebサイトへのYotutube動画の設置
Yossy Taka
 
Bracketsを使おう
Bracketsを使おうBracketsを使おう
Bracketsを使おう
Yossy Taka
 
JavaScriptによるgoogle maps apiの使い方
JavaScriptによるgoogle maps apiの使い方JavaScriptによるgoogle maps apiの使い方
JavaScriptによるgoogle maps apiの使い方
Yossy Taka
 
JavaScriptによるvideo audio要素のコントロール入門
JavaScriptによるvideo audio要素のコントロール入門JavaScriptによるvideo audio要素のコントロール入門
JavaScriptによるvideo audio要素のコントロール入門
Yossy Taka
 
スマホアプリ開発-プロモーション・集客・サポート・広告収入-
スマホアプリ開発-プロモーション・集客・サポート・広告収入-スマホアプリ開発-プロモーション・集客・サポート・広告収入-
スマホアプリ開発-プロモーション・集客・サポート・広告収入-
Yossy Taka
 
Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信
Yossy Taka
 
HTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリHTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリ
Yossy Taka
 
JavaScript 基礎文法のまとめ
JavaScript 基礎文法のまとめJavaScript 基礎文法のまとめ
JavaScript 基礎文法のまとめ
Yossy Taka
 
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
Yossy Taka
 
Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語
Yossy Taka
 
Emmetの使い方
Emmetの使い方Emmetの使い方
Emmetの使い方
Yossy Taka
 
JavaScript04 jquery プラグインを使おう
JavaScript04 jquery プラグインを使おうJavaScript04 jquery プラグインを使おう
JavaScript04 jquery プラグインを使おう
Yossy Taka
 
JavaScript basic, jQuery animation
JavaScript basic, jQuery animationJavaScript basic, jQuery animation
JavaScript basic, jQuery animation
Yossy Taka
 
Webデザイン入門1-HTML5・CSSについて-
Webデザイン入門1-HTML5・CSSについて-Webデザイン入門1-HTML5・CSSについて-
Webデザイン入門1-HTML5・CSSについて-
Yossy Taka
 

More from Yossy Taka (14)

WebサイトへのYotutube動画の設置
WebサイトへのYotutube動画の設置WebサイトへのYotutube動画の設置
WebサイトへのYotutube動画の設置
 
Bracketsを使おう
Bracketsを使おうBracketsを使おう
Bracketsを使おう
 
JavaScriptによるgoogle maps apiの使い方
JavaScriptによるgoogle maps apiの使い方JavaScriptによるgoogle maps apiの使い方
JavaScriptによるgoogle maps apiの使い方
 
JavaScriptによるvideo audio要素のコントロール入門
JavaScriptによるvideo audio要素のコントロール入門JavaScriptによるvideo audio要素のコントロール入門
JavaScriptによるvideo audio要素のコントロール入門
 
スマホアプリ開発-プロモーション・集客・サポート・広告収入-
スマホアプリ開発-プロモーション・集客・サポート・広告収入-スマホアプリ開発-プロモーション・集客・サポート・広告収入-
スマホアプリ開発-プロモーション・集客・サポート・広告収入-
 
Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信
 
HTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリHTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリ
 
JavaScript 基礎文法のまとめ
JavaScript 基礎文法のまとめJavaScript 基礎文法のまとめ
JavaScript 基礎文法のまとめ
 
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
 
Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語
 
Emmetの使い方
Emmetの使い方Emmetの使い方
Emmetの使い方
 
JavaScript04 jquery プラグインを使おう
JavaScript04 jquery プラグインを使おうJavaScript04 jquery プラグインを使おう
JavaScript04 jquery プラグインを使おう
 
JavaScript basic, jQuery animation
JavaScript basic, jQuery animationJavaScript basic, jQuery animation
JavaScript basic, jQuery animation
 
Webデザイン入門1-HTML5・CSSについて-
Webデザイン入門1-HTML5・CSSについて-Webデザイン入門1-HTML5・CSSについて-
Webデザイン入門1-HTML5・CSSについて-
 

Recently uploaded

生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 

Recently uploaded (12)

生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

Canvasによるデジタル時計制作入門

  • 2. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 2 Canvasで デジタル時計
  • 3. Copyright Ⓒ Yoshihiro Takahashi 2009 All Rights Reserved. 3 今回の講義内容 • Canvas文字表示を利用して、デジタル時 計を作成 – Canvasによるアニメーションの設定 • setIntervalとCanvas独特のアニメーション設定 – デジタル時計 • Dateオブジェクトによる日時表示 – JS制御文の活用 • 関数や配列などのJSの構文と組み合わせる
  • 4. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 4 デジタル時計を作りながら Canvasアニメーションを 学習していこう
  • 5. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 5 まずは 文字表示
  • 6. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 6 • 文字表示 – フォント指定 コンテキスト.font = ‘スタイル サイズ ファミリー名’; 記述例:‘bold 20px sans-serif’ – 文字の縁線を描画 コンテキスト.strokeText( 文字, 横位置, 縦位置); – 文字の塗りつぶし コンテキスト.fillText( 文字, 横位置, 縦位置); canvas要素に文字を表示しよう
  • 7. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 7 Canvas アニメーション
  • 8. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 8 • Canvas図形をJavaScriptで動かそう • 大切なポイント – 最初に日本語で動き(仕組み)を考えて、その動きを JavaScriptで翻訳し記述する ・・・という流れです。 そのため、日本語で仕組みを正しく考えられれば、6 割~7割程度の作業は完了したことと同じになります。
  • 9. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 9 プログラミングの ポイント
  • 10. ©2014 Yoshihiro Takahashi All Right Reserved. 10 • 英語(外国語)を学習するイメージ → つまり理系じゃなくても大丈夫!! • 英単語の覚える ⇒ 命令などを覚える • 文法を理解する ⇒ 条件分岐文、繰り返し文 – ただし、理解するためには多くの時間がかかります • 初めての内容を学習するので、分からないことが多い – 何度も復習をして、理解を深めてください。 – 英語などの言語も一回では覚えられないのと同じです。 • コンピュータに的確に意思を伝えることが重要 – プログラミング的思考 JS(プログラム言語)を学習するための心構え
  • 11. ©2014 Yoshihiro Takahashi All Right Reserved. 11 プログラミング的思考 • 繰り返し文(ループ文) – 数ミリ秒間隔に繰り返す – ?回作業を繰り返す • 条件分岐文 – if文 • もし ○○の値が△△だったら
  • 12. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 12 プログラミングのポイント • 考え方の基本は、 【いつ】 + 【どこ/誰】 + 【どうする】
  • 13. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 13 プログラミングのポイント • 考え方の基本は、 【いつ】 + 【どこ/誰】 + 【どうする】 皆さん、来週 一緒にランチしましょう
  • 14. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 14 皆さん、来週 一緒にランチしましょう プログラミングのポイント • 考え方の基本は、 【いつ】 + 【どこ/誰】 + 【どうする】 誰 いつ どうする
  • 15. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 15 プログラミングのポイント • 考え方の基本は、 【いつ】 + 【どこ/誰】 + 【どうする】 文字
  • 16. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 16 プログラミングのポイント • 考え方の基本は、 【いつ】 + 【どこ/誰】 + 【どうする】 文字 右に動け!!
  • 17. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 17 プログラミングのポイント • 考え方の基本は、 【いつ】 + 【どこ/誰】 + 【どうする】 文字 右に動け!!
  • 18. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 18 プログラミングのポイント • 【いつ】 + 【どこの/誰】 + 【どうする】 – 数ミリ秒間隔のタイミングで (いつ) – canvas文字 (どこ/誰) – X座標を変更 (どうする)
  • 19. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 19 アニメーション • 数ミリ秒間隔のタイミングで – 指定した値のミリ秒間隔で連続で実行 – 「何か」を繰り返し実行し続けたい場合に利用 – 「setInterval」というイベントを使います。 • 設定方法 setInterval(function(){ 繰り返しやりたい事; }, ミリ秒); 即時関数での実行 setInterval(関数名, ミリ秒); function 関数名(){ 繰り返しやりたい事; } 関数定義での実行
  • 20. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 20 Canvas(ブラウザ)の動きの考え方 Canvas 0 Y X 右に動かす = X座標の値を増やす 下に動かす = Y座標の値を増やす
  • 21. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 21 • 文字表示 コンテキスト. fillText( 文字, 横位置, 縦位置); canvas要素に文字を移動しよう
  • 22. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 22 • 文字表示 コンテキスト. fillText( 文字, 横位置, 縦位置); canvas要素に文字を移動しよう この数値を変更する
  • 23. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 23 • 文字表示 コンテキスト. fillText( 文字, 横位置, 縦位置); canvas要素に文字を移動しよう setInterval(function(){ ctx.fillText( ‘文字’, 100, 100); }, 30);
  • 24. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 24 あれ、 動かない?
  • 25. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 25 アニメーション • この記述だと、100を何度も設定している • 数値を定期的に変更する必要がある 100→101→102→103→104・・・ setInterval(function (){ ctx. fillText( ‘文字’, 100, 100); }, 30);
  • 26. 26 数値を 変更したい Copyright Ⓒ Yoshihiro Takahashi 2015 All Rights Reserved.
  • 27. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 27 変数
  • 28. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 28 変数について • 変数とは – 値を入れるための「入れ物」 – 値(数字など)を変化させたい場合に使用する – 「 var 変数 」 で、変数の宣言(作成) – 「 変数 = 値 」で、変数に値を代入 • 記述例 var 変数 = 値 ; var 変数 = ‘文字’ ; // 文字はシングルクォート ‘’ で囲む var 変数 = 値, 変数 = ‘文字’; // カンマ, で複数宣言
  • 29. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 29 ポイント = 値 代入 「=」は、代入という意味です。 「=」の左側は「入れ物」、「=」の右側は「値」となります 数学の X=Y とは違います XとYが等しいというイメージを捨てましょう 入れ物
  • 30. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 30 ここで問題・・・ 残像が残る
  • 31. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 31 canvasアニメーションの 基本
  • 32. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 32 Canvasアニメーションの基本 更新 クリア 描画
  • 33. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 33 • 矩形 – 塗られた矩形を描く コンテキスト. fillRect(x, y, width, height) – 矩形の輪郭を描く コンテキスト. strokeRect(x, y, width, height) – 指定された領域を消去 コンテキスト. clearRect(x, y, width, height) canvas要素に図形を描画しよう
  • 34. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 34 今の 問題点は?
  • 35. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 35 現状の問題点 • 右に行きっぱなし 文字
  • 36. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 36 現状の問題点 • 右に行ったら、左に戻したい 文字 文字
  • 37. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 37 条件によって 処理を変えたい
  • 38. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 38 条件分岐 if
  • 39. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 39 条件分岐(if文) if (条件式1) { 実行したい処理; } else if (条件式2) { 実行したい処理; } else{ 実行したい処理; }
  • 40. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 40 条件分岐(if文) if (条件式1) { 実行したい処理; } else if (条件式2) { 実行したい処理; } else{ 実行したい処理; } 条件式1が成立したとき、 { }の中を実行する 条件式1が成立せず、 条件式2が成立したとき、 { }の中を実行する 条件式1と条件式2が 成立しないとき、{ }の 中を実行する
  • 41. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 41 条件式の設定方法 • 比較演算子 A == B (等しい) A > B (より大きい) A < B (より小さい) A >= B (以上) A <= B (以下) A != B (等しくない)
  • 42. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 42 条件分岐(if文) if (パソコンの価格 < 5万円) { パソコンを購入; } else{//条件を満たしていないとき お店から出る; } • 普段からifは使っています
  • 43. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 43 簡単なデジタル時計を 作成してみよう
  • 44. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 44 時計を制作するには、PCから日時を 取得する必要があります。 日時を取得するJavaScriptの命令は・・・。
  • 45. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 45 Dateオブジェクト 日時取得の命令
  • 46. Copyright Ⓒ Yoshihiro Takahashi 2014 All Rights Reserved. 46 Dateオブジェクトとは • 日付や時刻をしらべることができる。 • 使用方法 – Date.メソッド() – Date.プロパティ
  • 47. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 47 日時の取得例 var now = new Date(); var hour = now.getHours(); console.log(hour); 実際に入力して、確認してみよう
  • 48. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 48 Date()の内容 • Dateオブジェクトを生成 – var now = new Date(); //Dateオブジェクト生成 – var hour = now.getHours(); //時の取得 • 主に取得できるデータ – getDate():日にちを参照する – getDay():曜日を参照する(0~6、日曜~土曜) – getFullYear():4桁の西暦年を参照する – getHours():現在の時を参照する – getMilliseconds():ミリ秒(1000=1秒)を参照する – getMinutes():分を参照する – getMonth():月を参照する(0~11、1月~12月) – getSeconds():秒を参照する
  • 49. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 49 課題 • 時刻を表示してみよう – 年・月・日・曜日を「/」で、文字連結 時・分・秒の値と「:」を文字連結して表示し よう 2012/8/16/日 16:35:57
  • 50. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 50 デジタル時計 • 現在の問題点 ?
  • 51. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 51 デジタル時計 • 時間を動かしたい アニメーションしよう
  • 52. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 52 デジタル時計 • 現在の問題点 ?
  • 53. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 53 デジタル時計の特徴 • ゼロの表示 – 0~9までは1桁なので、表示が変になる • 14:1:5 • 12:13:45 • 1:5:7 • 2008/1/5 • 2007/12/25 – 年を除く各項目の値が0~9の時は前に0を追加 • 14:01:05 • 12:13:45 • 01:05:07 • 2008/01/05 • 2007/12/25
  • 54. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 54 デジタル時計の特徴 • 年を除く各項目の値が0~9の時は、数字 の前に0を追加してみよう。 – if文を使うと簡単です。
  • 55. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 55 デジタル時計の特徴 • 年を除く各項目の値が0~9の時は、数字 の前に0を追加してみよう。 – if文を使うと簡単です。 – でも、月,日,時,分,秒の5つも似たよう な処理を書くのは面倒・・・
  • 56. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 56 課題 • 各項目の値が0~9の時は、数字の前に0 を追加してみよう・・・Part 2 – 関数を作成して、1つの処理にまとめましょう。 • 関数の内容は、先ほど説明したif文です。 – 関数は、「作ること」と「使うこと」は別に なりますので、注意してください。
  • 57. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 57 function:処理をまとめる • ユーザーが事前に設定できる、命令文です。 実行処理の再利用、一元管理するのに有効です。 関数は、「作ること」と「使うこと」は別になりますので、 勘違いしないよう気をつけてください。 function 関数名(引数1,引数2,・・){ 実行したい処理; ・・・ return 戻り値; }
  • 58. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 58 もう少し高速動作 を意識する 学習のためにifとfunctionを確認しました 日時取得の命令
  • 59. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 59 デジタル時計の桁調整 • sliceによる文字の切り取り – sliceの使用例 → 文字.slice(開始位置) var a = 123456789; a.slice(3); → 3456789 a.slice(-2); → 89 – 日時の場合 var hour = now.getHours(); ( ‘0’ + hour).slice(-2); // hourが5の場合05、25の場合025→25
  • 60. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 60 曜日を簡単に 表示する 日時取得の命令
  • 61. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 61 曜日を簡単に表示する • ifの場合 → 記述が長い var day = now.getDay(); if(day == 0){ //日曜表示 }else if(day == 1){ //月曜表示 } else if(day == 2){ //火曜表示 } ・・・・・
  • 62. Copyright Ⓒ Yoshihiro Takahashi 2014 All Rights 62 そこで配列!!
  • 63. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights Reserved. 63 曜日を簡単に表示する • 配列を利用 – CDケースみたいなもの・・・です。
  • 64. Copyright Ⓒ Yoshihiro Takahashi 2014 All Rights Reserved. 64 配列 • オブジェクトを作成します。 var a = new Array(); 例 a[0] = 100; a[1] = 200; a[2] = 300;
  • 65. Copyright Ⓒ Yoshihiro Takahashi 2014 All Rights Reserved. 65 配列の特徴 • []の中に変数が使える a[ 変数 ]
  • 66. Copyright Ⓒ Yoshihiro Takahashi 2014 All Rights Reserved. 66 配列 • 記述例 var a = new Array(); a[0] = ‘ABC’; a[1] = ‘DEF’; a[2] = ‘GHI’; var a = new Array(‘ABC’, ‘DEF’, ‘GHI’);
  • 67. Copyright Ⓒ Yoshihiro Takahashi 2012 All Rights 67 続きは、 Canvas入門03 アナログ時計作成へ・・・