More Related Content
PDF
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう KEY
PDF
モックアップやプロトタイプづくりを 加速させる。それが SVG。@DIST.4 「Life is Short」 PDF
PDF
SVGでつくるインタラクティブWebアプリケーション PDF
PDF
PDF
インラインSVGをつかって地図っぽいものをつくってみる What's hot
PDF
ShareWisをFirefoxで動かすためのSVG的とりくみ PDF
PDF
HTML5のCanvas入門 - Img画像を編集してみよう - PPTX
Azure上でec cubeを運用するポイント PPTX
PDF
PDF
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS PDF
UITableViewで無限CoverFlowを作る PDF
PDF
Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境 PDF
PPTX
PDF
HTML5 Conference 2015 WebGLハンズオン資料 PDF
PPTX
PDF
UICollectionViewLayoutでカバーフローを作りたい! KEY
12.09.08 明星和楽2012 KLabハンズオンセッション PDF
PDF
Similar to HTML5で作るスマホブラウザゲーム
KEY
PDF
Flashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたら PDF
PPTX
KEY
JavaScript Hackathon for Students PPTX
インタラクティブコンテンツにおけるHTML5とFlash KEY
PPTX
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」 PDF
静岡Developers勉強会 HTML5&CSS3 PDF
PPTX
Osakijs #01 「enchant.jsハンズオン資料」 PDF
PDF
初心者向けJavaScript/HTML5ゲームプログラミング ODP
PDF
PDF
「釣り★スタ」でのCocos2d-JSを使ってのアプリアップデート事例 (1) KEY
iOSプログラマへ。HTML5 Canvasがおもしろい! PDF
PPTX
PDF
The forefront of html5 implementation HTML5で作るスマホブラウザゲーム
- 1.
- 2.
自己紹介
• 大橋 巧
• 2011年4月入社
• スマートフォン向けコンテンツのクライアン
トサイド担当
• Corollin’ Planet
• 最近はFlashコンテンツのHTML5変換や、
Backbone.jsでWebアプリの開発とか
- 3.
- 4.
- 5.
5-Land
• iOS/Androidのブラウザ
上で動くミニゲーム集
• 一部を除いてHTML5で
はない
• ガラケーレベル
- 6.
- 7.
Corollin’ Planet
• 今年3月、Mobile Hack Tokyoの
HackathonにてFacebookアプリ
としてリリース
○ 得点、進行状況のシェア
○ 友人のプレイ記録をゲーム
内で見られる
• あのザッカーバーグもプレイ
感想:”Too Hard.”
• Best Social Mobile Game受賞!
- 8.
- 9.
- 10.
- 11.
Canvasとは
• JavaScriptを使って動的に図を描くHTMLの要素
HTML:
<canvas width= 100 height= 100 ></canvas>
js:
var canvas = document.getElementsByTagName('canvas')[0];
var ctx = canvas.getContext('2d');
ctx.Rect(0, 0, 50, 100);
ctx.fill();
- 12.
Canvasアニメーション
• ループの中で、描画→クリア→描画
setInterval(function() {
// Canvasをリフレッシュ
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 座標を移動させながら描画
ctx.drawImage(img, x++, y);
}, 100);
- 13.
CSS3アニメーション
• Animation
○ キーフレームをCSSに記述
CSS:
#hoge {
-webkit-animation: animation_1 1s infinite;
}
@-webkit-keyframes animation_1 {
0% { left: 0px; }
50% { left: 200px; }
100% { left: 100px; top: 100px; }
}
- 14.
CSS3アニメーション
• Transition
○ 時間的変化
○ スタイルを変更すると自動的にアニメー
ションを伴って変化する
CSS:
-webkit-transition: ease-out 2s;
js:
document.getElementById( hoge ).style.left = 100px ;
document.getElementById( hoge ).style.top = 100px ;
- 15.
番外
• HTML5使わない場合
js:
setInterval(function() {
x++;
document.getElementById( hoge ).style.left = x + px ;
}, 100);
• CanvasもCSS3も使えないブラウザでは必要
(IE8以下など)
- 16.
CanvasかCSS3か
• Canvasアニメーション
○ 複雑な動き(物理判定など)も作れる
○ CSS3と比べるとパフォーマンスは落ちる
• CSS3アニメーション
○ 実装が簡単(CSSのみで完結)
○ シンプルなアニメーション
- 17.
- 18.
- 19.
- 20.
対策:アニメーションが重い
• Canvas
○ Retinaディスプレイ対応
○ 描画範囲を最小限に
○ putImageDataを使用
• CSS3
○ GPUアクセラレーションを利用
- 21.
Retinaディスプレイ対応
• 2倍サイズの画像を2倍サイズのCanvasに描画
○ 非Retina
<canvas width= 100 height= 100 >
ctx.drawImage(img, 0, 0, 100, 100);
○ Retina
<canvas width= 200 height= 200 style= width: 100px; height: 100px; >
ctx.drawImage(img, 0, 0, 200, 200);
• アニメーションのパフォーマンスにも影響
- 22.
描画範囲を最小限に!
• Canvasアニメーションでは毎フレームCanvasを
クリアする必要があるため必然的に描画範囲
が大きくなり、重くなる
→必要な部分だけ再描画する
- 23.
putImageData
• getImageDataで読み込んだものを貼付ける
• drawImageDataより描画コスト軽い
var image = ctx.getImageData(0, 0, 100, 100);
ctx.putImageData(image, 0, 0);
• Corollinではあらかじめアニメーションパター
ンを読み込み、putImageで連続的に再生
(内部でセル画を生成しているイメージ)
- 24.
GPUアクセラレーション
• iOSではtransformプロパティ等に対してアクセ
ラレーションが有効
→iOS5からはCanvasに対しても有効
• iOSシミュレータの場合
デバッグ→ブレンドレイヤーで確認
- 25.
その他
• Canvasを複数枚重ねてレイヤー的に
• 描画は2フレームに1度
• キャラクターの画像はAi→Canvasという
IllustlatorのプラグインでCanvasデータに変更
- 26.
Canvasのバグ
• 主にAndroid 2.1x
○ drawImageのサイズ、座標が引き延ばされる
○ scaleが2回適用される
○ rotate, translateがなんかカオス
- 27.
Canvasのバグ
• drawImageのバグ
→scaleで対応
var zoom_fix = Math.sqrt(320 / screen.width);
ctx.scale(zoom_fix, zoom_fix);
ctx.drawImage(hoge, 0, 0);
• transform, rotate
→使わない
- 28.
CSS3のバグ
• Android2.2以降でTransformを設定した要素の子
要素にTransformを設定
→アニメーション時、一瞬Transformが適用さ
れない事がある
• 対策:やめましょう
- 29.
- 30.
Androidのチェックを万全に
• 先述した以外にも端末やメーカー別のバグが
あるため、詳細なチェックは必須
• iOSで動いているものをAndroidでも動かそう
とすると難しいが、逆は簡単
→Androidベースで開発していくのもアリ
- 31.
安定した機能を使う
• 実際に他社で使用されているなど、実績のあ
るものを使用
• Web SQLのようにHTML5の仕様から外れてし
まうものも
- 32.
ライブラリの使用
• ここ一年でかなり充実
• バグや実装の違いを吸収してくれるものも
• ライブラリ
→enchant.js, Arctic.js,easel.js, etc...
• オーサリングツール
→Adobe Edge, Sencha Animater, etc...
- 33.