SlideShare a Scribd company logo
1 of 32
Download to read offline
Canvas系ライブラリの
あれやこれや 2015
自己紹介
幸脇 健太(コウワキ ケンタ)です
フリーランス1年目で
コウワキデザイン
という屋号でやっています
元Flasherなフロントエンドエンジニアです
最近はサーバやバックエンド言語もさわっ
てます
Twitter : @kuwk
Web : http://kuwk.jp
/* 注意 */
・個人の体験を多分に含みます
・そのため情報に偏りがあります
・マサカリは…
受託系フロントエンドエンジニア
がさわってきた
Canvas系ライブラリ
今日のアジェンダ
どんなときに
Canvasを使いますか
自分の場合は
主にゲーム制作
enchant.js
CreateJS
tmlib.js
Cocos2d-JS
それぞれの使用感は?
enchant.js
制作物:ブロック系パズルゲーム
使ったころのバージョンはv0.4
(最新は、v0.8.2)
実はその頃はまだCanvas非対応
非常にとっつきやすかった
//v0.4のものなので今は多少変わってると思います。
//enchant初期化
enchant();
var game = new Game(640, 960); //画面サイズ設定
game.preload(['./img/title.png, ./img/game.png ]); //プリロード
game.fps = 30; //フレームレート
game.onload = function() {
var titleScene = new Scene(); //タイトル画面生成
game.rootScene.addChild(titleScene);
var title = new Sprite(w, h); //タイトル生成
title.image = './img/title.png';
title.x = 100;
title.y = 50;
titleScene.addChild(title);
title.addEventListener("touchstart", function(e) {
game.pushScene(gameScene); //ゲーム画面へ
});
game.start(); //ゲーム実行
}
詳しくはこちら
http://enchantjs.com/ja/
CreateJS
制作物:オセロゲーム、某社さんのR18なゲーム
情報が多いのは大きなメリット
Flashから書き出せる
ただ意外に変なところではまる
・zoomでボタンのヒットエリアのずれ
・ブラウザをリロードしても重いまま
どの端末でも画面に
フィットさせたい
理想
ボタン
ヒットエリア
bodyにzoomかけると
ボタン
ヒットエリア
でも実際は
ボタン
ヒットエリア
ボタン
ヒットエリア
bodyにzoomかけると
zoomでボタンのヒットエリアのずれ
端末毎にフィットするようbodyにzoomを使うとボ
タンのヒットエリアがずれてしまう
ボタン
ボタン
ヒットエリア
ヒットエリア
理想
bodyにzoomかけると
ボタン
ヒットエリア
Canvas要素に対して、
css3のtransformでサイズ
調整することで解決
canvas {
-webkit-transform-origin: top left;

-webkit-transform: scale3d(0.5, 0.5, 0.5);
}
ブラウザをリロードしていくと
どんどん動作が重くなっていく
解決できず
制作物:バブル系パズルゲーム
ゲーム制作向けに作られていて
画面管理が簡単
気軽に試せる
(http://phi-jp.github.io/runstant/)
今は後継のphina.jsが開発されてる
(http://phinajs.com/)
tmlib.js
tm.define('MainScene', {
superClass: "tm.game.ManagerScene",
init: function(app) {
this.superInit({
scenes: [ //画面遷移設定
{
className: tm.game.LoadingScene , //ローディング
label: "loading",
arguments: {
assets: {//プリロード
"titleBg":{path: "./img/bg_ground.png", type: png"},
"gameBg":{path:"./img/chara.png", type: png"},
},
width: 640,
height: 960,
bgColor:"white",
autopop: true
}
}, {
className: tm.game.TitleScene", //タイトル画面
label: title",
arguments: { //画面設定
title : "ゲームタイトル",
message: "",
bgColor: "black",
bgImage: "title",
width : 640,
height : 960,
fontColor: "white",
fontSize: 60,
autopop: true
}, {
className: GameScene ,//ゲーム画面
label: "game"
arguments: {
bgImage: "gameBg"
}
},
]
});
},
});
tm.main(function() {
var app = tm.app.CanvasApp( #app"); // アプリケーション作成
app.resize(gameWidth, gameHeight); // 画面サイズに合わせる
app.fitWindow(); // リサイズ対応
app.replaceScene(MainScene(app)); // シーンの切り替え
app.run(); // tmlibの実行
});
tm.define("GameScene", { //ゲーム画面の処理
superClass : "tm.app.Scene",
init : function() {}, //初期実行
update: function (app) {}, //update処理
onpointingstart: function() {} //タッチ処理
}
番外編
swf2js
swfのバイナリをJSで読
み込んでCanvasに出力
つまり
swfをまるっと
Canvas化してくれる
Flash Lite1.x / 2.x
ActionScript 1.0 / 2.0
対応
詳しくはこちら
http://qiita.com/ienaga/items/b4412baa95afe882907b
http://qiita.com/ienaga/items/c9f04d6cd9874d4ec1a7
<script type="text/javascript" src= swf2js.js ></script>
<script type="text/javascript">
swf2js.load('hoge.swf');
</script>
すごい!
Flashは死なない!
ご静聴ありがとうございました

More Related Content

What's hot

暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacsShougo
 
できる!?Companion
できる!?Companionできる!?Companion
できる!?CompanionYuji Kazan
 
はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~Ryunosuke SATO
 
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~Ryunosuke SATO
 
TypeScriptはいいぞ
TypeScriptはいいぞTypeScriptはいいぞ
TypeScriptはいいぞJun Suzuki
 
自動テスト入れてみたけど、誰からも反応が無かった話。
自動テスト入れてみたけど、誰からも反応が無かった話。自動テスト入れてみたけど、誰からも反応が無かった話。
自動テスト入れてみたけど、誰からも反応が無かった話。naoyuki miyata
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014Sugoi Kanari
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときRyunosuke SATO
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimShougo
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environmentShougo
 
Javascript を使ってみよう!!
Javascript を使ってみよう!!Javascript を使ってみよう!!
Javascript を使ってみよう!!誠 小林
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけShougo
 
120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascriptTakayoshi Tanaka
 
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようNode.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようYuusuke Takeuchi
 
Node.jsでKinectを触ろうとして色々しくじった話
Node.jsでKinectを触ろうとして色々しくじった話Node.jsでKinectを触ろうとして色々しくじった話
Node.jsでKinectを触ろうとして色々しくじった話kamiyam .
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?Masahiro Sano
 
Websocketのお絵かきチャットサンプル
Websocketのお絵かきチャットサンプルWebsocketのお絵かきチャットサンプル
Websocketのお絵かきチャットサンプルYujiro Araki
 

What's hot (20)

暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
できる!?Companion
できる!?Companionできる!?Companion
できる!?Companion
 
はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~
 
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
 
TypeScriptはいいぞ
TypeScriptはいいぞTypeScriptはいいぞ
TypeScriptはいいぞ
 
自動テスト入れてみたけど、誰からも反応が無かった話。
自動テスト入れてみたけど、誰からも反応が無かった話。自動テスト入れてみたけど、誰からも反応が無かった話。
自動テスト入れてみたけど、誰からも反応が無かった話。
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vim
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
 
Javascript を使ってみよう!!
Javascript を使ってみよう!!Javascript を使ってみよう!!
Javascript を使ってみよう!!
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
Js mvc
Js mvcJs mvc
Js mvc
 
About Nuxt.js
About Nuxt.jsAbout Nuxt.js
About Nuxt.js
 
120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascript
 
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようNode.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
 
エディタ戦争
エディタ戦争エディタ戦争
エディタ戦争
 
Node.jsでKinectを触ろうとして色々しくじった話
Node.jsでKinectを触ろうとして色々しくじった話Node.jsでKinectを触ろうとして色々しくじった話
Node.jsでKinectを触ろうとして色々しくじった話
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
 
Websocketのお絵かきチャットサンプル
Websocketのお絵かきチャットサンプルWebsocketのお絵かきチャットサンプル
Websocketのお絵かきチャットサンプル
 

Canvas系ライブラリのあれやこれや2015