私の rascut のインストール手順

まさか,補足していただけるとは思ってませんでした(しかも変なタイトルでトラックバックを送ってしまってすみません…).

作業環境は Windows2000 + Ruby 1.8.5-p12 + cmd.exe です.Ruby のバージョン上げ忘れてました^^;

記憶を頼りになのですが,私の rascut のインストール手順を極力細かく書いてみました.

  • hoe と rack をインストール
  • svn リポジトリを取得
  • rake install_gem でエラー
>rake install_gem
rake aborted!
couldn't find HOME environment -- expanding `~/.hoerc'
E:/bin/rascut/rakefile:8:in `new'
(See full trace by running task with --trace)
  • E:\home を作って,HOME 環境変数を設定(set HOME="e:\\home")
  • 再度,rake install_gem
>rake install_gem
(... 前略 ...)
cd -
  Successfully built RubyGem
  Name: rascut
  Version: 0.1.0
  File: rascut-0.1.0.gem
mv rascut-0.1.0.gem pkg/rascut-0.1.0.gem
gem install pkg/*.gem
rake aborted!
Command failed with status (0): [gem install pkg/*.gem...]
(... 後略 ...)
>gem install rascut-0.1.0.gem
e:/ruby/lib/ruby/site_ruby/1.8/rubygems/config_file.rb:51:in `initialize': Inval
id argument - "e:\\home"/.gemrc (Errno::EINVAL)
(... 後略 ...)
>set HOME=
>gem install pkg/rascut-0.1.0.gem

で,インストール完了しました.

現在は,最新のリポジトリを元に FileObserver#dir_observe だけを書き換えて動かしています.

          #@dirs[dir] ||= dir.mtime
          @dirs[dir] ||= Time.at(0)

こうしないと監視対象が上手く登録されないのは,正常な動作だからなのか,どこか設定を弄ったからなのか,Windows の仕様なのかはわかりません><

rascut が便利すぎる

更新ファイルを監視して、自動で再コンパイル、ブラウザのリロードまでしてくれるツール。インタプリタ感覚で書けて最高!

rascut

なんか、上手くリンクが張れなかった。はてな記法はよくわからない。


うちの環境では、そのままでは動作できなかったので、いろいろやって Windows で動作させた。

HOME 環境変数絡みのエラー以外は、知識不足で変なことやってる臭いがぷんぷんするので、本家には報告してないけどメモ。

--include-libraries オプションを追加してみたり

mxmlc のオプションのうち -include-libraries は末尾に付けなければmxmlc の仕様でエラーになる。例えば、今まで使ってたのは↓のようなコマンド。これは、rascut の --compile-config では実現できない。

mxmlc -debug=true +configname=air Genial.as -include-libraries corelib.swc tweener.swc

そこで、--include-libraries オプションを追加してみた

      op.on('--include-libraries=VAL', 'include swcs ex:) --include-libraries="tweener.swc,hoge.swc"') {|v| @params[:include_libraries] = "--include-libraries " + v.split(',').join(' ') }
      cmd = ['mxmlc', @config[:compile_config], @target_script, @config[:include_libraries]].join(' ')

の二カ所を変えた。でも、よくよく考えたら

rascut "Genial.as -include-libraries corelib.swc,tweener.swc" --server --verbose  ^
  --observe-ext="as,swc,xml,svg"  ^
  --compile-config=" -debug=true +configname=air"

で回避できたっぽい。^ は cmd.exe の行継続記号。

そもそも、mxml を使ったりしたら何とか出来るんじゃないんだろうか。

ファイルの編集で、フォルダの更新日時が更新されないからなのか、"." だけを指定していると、個別のファイルが監視対象にならず、編集しても再コンパイルされない

うちの環境だけなのだろうか。FileObserver#dir_observe 内を

          # @dirs[dir] ||= dir.mtime
          @dirs[dir] ||= Time.at(0)

に書き換えて、最初に全ディレクトリが更新されたことにして回避。

画像の回転

背景でチップがクルクル回るようにしました。

この際、DisplayObject#rotation は 左上 を基準に回転するので、画像の中央などを中心にしたい場合使えない。

そこで、DisplayObject#.transform を使えばいけた。変換行列で「平行移動→回転→平行移動」。数学で習ってますよね。

	addEventListener( Event.ENTER_FRAME, rotateBackgroundChip );
// ... 中略
private function rotateBackgroundChip( event:Event ):void {
	var rotationMatrix:Matrix = image.transform.matrix;
	rotationMatrix.translate( -baseX, -baseY); // 左上へ平行移動
	rotationMatrix.rotate( 0.04 ); // 回転
	rotationMatrix.translate(  baseX,  baseY); // 元の位置へ平行移動
	
	image.transform.matrix = rotationMatrix;
}

そんなこんなで


ロビーを改造したり、表に見えないところをいじったり、手抜きな天才と総替えの演出をつけてみたり。

一通り作ってきて、メッセージング周りを再度見直したくなった。だいぶ汚いコードになってきた。

そして、そろそろ、、、と思って、本体の日記で表に出してみた。サーバの問題が一番不安。今のところ、Linux だと再現していないのだけど…。

車輪の再発明

行為が名詞を獲得するということは、普遍性を見出されたということである。 つまり、世界的に共通して存在する言葉があるのなら、それは、世界的な普遍性を持つ概念である。

くっそー、mxml 使ってアプリ書いてたら、豊富な GUI 部品があるというのにぃ・・・

ListView も作るべきなんだろうか。