Home

Born Neet

Canvasのclipで遊ぶ(ついでにuupaa.jsの最新版0.7を使ってみる)

clipがおもしろそうだったので遊んでみました。
恥ずかしながらこの機能、今日まで知りませんでした。
※ 昨年末、HTML5やCanvasを結構触ってたのに・・・

というわけで、MDCのサンプルを改造してできたのが以下の2つ。

A canvas clip example(with rotate&uupaa)
星が回転します。ちょっとプラネタリウムっぽい?

A canvas clip example(with uupaa(mouse event))
マウスの動きに合わせてクリッピング領域が移動します。
また、左クリックで拡大、右クリックで縮小できます。
望遠鏡をイメージしました。

どちらもuupaa-jsを使ってるので、IEでも動くはずです。(とてつもなく重いですが。)

さて、今までcanvasものはjQuery+uuCanvasで実装してきましたが、
昨年末に待望の0.7が登場したので、今回からすべてuupaa.jsでやることにしました。

uupaaはクロスブラウザでHTML5やCSS3等々が使えちゃう素晴らしいライブラリですが、
ドキュメントはあまりないので、以下に手順を書いておきます。

興味ある方はどうぞ。

uupaa.jsを入手しよう(build)

2分でわかる uupaa.js の ビルド方法 :: handsOut.jpの通りですが、
とりあえずフルセットを試したいって人は以下の手順だけやればOK。
(僕の作ったサンプルで読み込んでるものをダウンロードするのもありですが。)

Windows

JREをインストール。
無料 Java ソフトウェアをダウンロード - Sun Microsystems

xamppをインストール。
apache friends - xampp for windows

コンパネ→システム→詳細設定→環境変数から、
PATHに「c:\xampp\php」を追加する。

minifier.zipを展開して、中身をuupaa.jsのbuildディレクトリに入れる。

コマンドプロンプトでbuildディレクトリに移動して、「b」を実行。

これでuupaa.jsのディレクトリに「uupaa.js(縮小化なし)」が、
buildディレクトリに「mini.full.y.js(縮小版)」ができます。

普段は
<script type="text/javascript" src="mini.full.y.js"></script>
としておいて、何かあったら、
<script type="text/javascript" src="uupaa.js"></script>
に切り替えてデバッグするのが良いと思います。(かなりでかいので)

Mac(snow leopard)

Macには初めからJavaもPHPも入ってるので、
uupaa.js/buildにcdして、 「php -f b.php」するだけでOKです。

uupaa.jsを使ってみよう

今回使った機能をjQueryと対比しながら列挙してみる。
※ ソース見てないので間違ってるかもしれません。
参考:uupaa.js 0.7 チートシート(Core) :: handsOut.jp

window.onload周り

// jQueryでは…
$(function() { ... });

// uupaaでは…
window.xboot = function() { ... };  // DOMContentLoaded
window.xwin = function() { ... };  // window.onload
window.xcanvas = function() { ... };  // canvas使ってる時はこれ。

event周り

// jQueryでは…
$('#id').click(function(e) { ... }); // set
$('#id').click(); // fire

// uupaaでは…
uu('#id').click(function(e) { ... }); // set
	/* チートシートでは以下の書き方になってるけどダメっぽい */
	uu('#id').bind('click', function(e) { ... });
uu.ev.fire(uu('#id').nth(), 'click'); // fire
	/* これはダメ */
	uu('#id').click();
uu.ev.stop(e); // イベントキャンセル

その他

offset(), width(), height()相当のメソッドは見つけられませんでした。
属性はattr()で取れます。
get(0)に相当するのは、nth()っぽいです。
※ uu.id()を使えばノードが返ってくるので、そっちを使うべきだと思います。
 uu[.query]()が返すのはuu.jamです。(uupaaオブジェクトでwrapされたもの)

Canvasの使い方

Canvas機能を組み込んだuupaa.jsをロードするだけです。
(上記のbuild手順でやればフル機能が入ってます。)
uuCanvasの時に書いていたXAMLは不要になりました。
canvas 周りの I/F を変更しました。 - latest log

ただ、pの下にcanvasを置くとIEでエラーになるので注意です。(excanvasもそうみたい
preとかul,dlとかは大丈夫だった気がします。
・・・とりあえず、divに入れてお茶を濁しておきましょう。
※ ホントはdiv直下にインライン要素を置くのもダメですけどね。

あと、uupaaとは直接関係ないですが、
canvas(というか要素内)でマウス座標を取る際の気をつけるところ。

要素の左上を原点とした座標は、
IEではoffsetX,Y、それ以外はlayerX,Yで取得します。
(uupaaのソースもそうなっていたはずです。)

このlayerXが曲者で、positionが未設定の場合pageXと同じ値を返します。
layerXとoffsetXは違う - Griever

というわけで、cssで「position: relative;」するか、
uu('#id').css('position', 'relative')しときましょう。

まとめ

以上です。
皆さんも国産ライブラリuupaa.jsを使ってみて下さい。

・・・久しぶりにブログ書いたら、文章ひどいですね。

PR

eBOOK-OFFのサービスに感動した

先日、イーブックオフで中古本を2冊ほど注文しました。
すると翌日、何やら謝罪メールが。

「出荷前の検品で商品に不備が見つかった」とのこと。
あらあら・・・。まぁ送料無料にする為についでに買った本だし、
別になくてもいいかぁ、とか思いながら読み進めると、

「サービスとして無償で同梱します。(送料はもちろん無料のまま)」

という目を疑うような記述が。
もらっちゃっていいんですか?

本来なら向こうの不手際に怒るところですが、
やられたなーって感じです。
※ しかも注文2日後には手元に届きました。

これからも中古本買う時はebookoffにしようと思いましたとさ。

Context Menuから任意の関数を実行するJetpack Feature

Settings APIの練習を兼ねて
新しいJetpack Featureを作ってみました。

Mozilla Labs Jetpack - func :: jetpack

名前は「func」といいます。

機能はいたって単純で、
以下のように右クリックメニューから関数を実行できます。



実行する関数は、about:jetpackから設定します。
※ 反映されない場合はabout:jetpackを更新してみると良いかもしれません。



デフォルトではfunc1に、
「<a href="document.location.href">document.title</a>」を
clipboardへコピーする関数が設定されています。
(func2,func3は空)

また、ソース1行目のFUNCS変数を変更することで、
登録する関数の数を増やすこともできます。

以上、使い道はあんまりなさそうですが、
よければどうぞ。

参考にしたのは以下のサイトです。
ありがとうございます_ _

はてぶにブックマークを登録するJetpack Feature - まめ畑
Jetpack Settiongs JEPを使ってみた - まめ畑
短縮URLをクリップボードにコピーするJetpack書いた - やればできる子の日記

application.iniを編集する方法でFirefoxを複数起動するとJetpackが使えない

Macで複数のFirefoxを共存させる方法 - Affirmative Wayとかで紹介されてる方法。
便利なんだけど、3.5と3.6でJetpackをテストしようと思ったら、
about:jetpackのDevelopタブとかがNot Found的なものになって動かない・・・。

おそらく、jetpackはprofileが
/Users/<ユーザ名>/Library/Application\ Support/Firefox
にあることが前提なんだろうと思う。
(3年ぐらい拡張に触ってないから仕組みを忘れすぎてよくわからんけど。)

というわけで以下の方法でインストールしなおした。
ちょっと面倒だけど仕方ない。

FirefoxをダウンロードしてFirefox3.5.appとかにリネームしてアプリケーションに突っ込む。
で、以下のコマンドでProfileManagerを開く。

$ /Applications/Firefox3.5.app/Contents/MacOS/firefox-bin -P
SnowLeopardでprofile manager - import laziness

あとは、「今後このプロファイルを使用する」にチェックを入れて
新規プロファイルを別名で作成するだけ。

Firefox3.5をDockに入れれば複数起動環境の構築完了。

これでjetpackも動いてめでたしめでたし。

じゃ、なかった。(2009/12/23 23:05)
これじゃどっちもDefault User2で起動しちゃう。

UK STUDIO - MacでFirefoxのプロファイルの使い分けと別バージョンの同時起動をする
を参考に3.6をdefaultで3.5をDefault User2で開くアイコンを作成。

ふぅ、これで安心して暮らせる。

一応手順(シェル)載せときます↓

Firefox3.5起動用シェル(snow leopard対応)
#!/bin/sh
/Applications/Firefox3.5.app/Contents/MacOS/firefox-bin -P "Default User2" &
exit 0

Firefox3.6
#!/bin/sh
/Applications/Firefox.app/Contents/MacOS/firefox-bin -P "default" &
exit 0

これを[Mac OS X] シェルスクリプトとかの CUI アプリケーションを Mac OS X 方式の .app にする方法 [簡単 5 ステップ]
から落としたapp内のcore.shに貼りつければOK。

Jetpackのステッカーを勝手に作った

前も書きましたが、
最近の趣味はステッカー作りです。

今日はJetpackのを作ってPCに貼りました。



余白の設定をミスって端が切れたのは秘密です。
(EeePCに貼った方)

Home

Page Top