カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年
知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。
preview7 を 8/1(今日) だして、8/4 に 1.8.0 リリースという噂も。8/1 が MacOS X 次バージョンに収録される表の締め切りで、8/4 が裏の締め切りってことなんでしょうか。
・Ming - an SWF output library and PHP module : 本家
・JaMing - Mingの日本語対応版 - : いわゆるひとつのグッドジョブ
・ming ML : @namazu.org
・横着プログラミング: zphoto: ズーミングするオンラインアルバムを作るツール
・mingdocs@webarchive : サイトが消滅しているので webarchive へのリンク
・Yet another implementation - Ming/Ruby : Ruby から Ming を扱うためのライブラリ
・Ming/Ruby いじり : 俺ルパンやサンプル集などなど。必見。
・Ming/Rubyで遊ぶ : 気の利いた使い方
・Let't be fool : Works : SWF : アレげな使い方
・(-_-) - (Ruby)Ming/RubyをWindowsで使う : インストール方法
・MingMemo : インストールメモ
例)s.set_line(5, 0xFF, 0x00, 0x00) #=> 線を太さ5、赤に設定線の太さ、色とアルファ値(透明度)を設定します。アルファ値は省略が可能で、省略すると 255 (=0xFF 不透明) になります。ウェブページ作成になれている人は、例のように16進数で色を設定すると分かりやすいかもしれません。
例)s.draw_line_to(20, 30) #=> x 座標 20、y 座標 30 に向かって線を描画座標 [x, y] に向かって線を引きます。直線オブジェクトを生成するのではなく、 ペンで [x, y] に向かってささっと線を書いているわけです。 初期座標は [0, 0] ですので、t02.rb は [0, 0] から [100, 100] までの直線を引くことになります。
例)m.add(s) #=> 表示可能なオブジェクト s を登録線を書いたら SWFMovie に登録しなければなりません。これを忘れると表示がされなくて悲しい想いをすることになります。
頭が痛いと何もやりたくなくなりますね。。。
・FreeRIDE* : Ruby で書かれた Ruby 用 IDE を作ろうというプロジェクトです。まだ移転してきただけでファイルは置いてないみたいですね。前にサイトのドキュメントを読んだ感じではアーキテクチャを厳密に設計して開発を進めているように感じられましたが、そのためか中々進んでいないようです。
・Whizzbot *: プラグイン式の IRC ボット
・ユニバーサル HTML/XHTML : 巷にウェブの要素技術の解説書はたくさんありますが、何故それが必要なのかという原理原則から説いて適切な使い方を示してくれるものは数少なです。この本はその貴重な書籍の一冊。ウェブサイト運営者だけでなく、ウェブ関連のツールの開発者に読んでほしいですね。
・Refrain of Evangelion : いつまで引っ張るのでしょう、と疑問に思いつつ購入。つまり私のような人がいる限り続くのでしょう。
・EVANGELION -THE BIRTHDAY OF Rei AYANAMI- : ついでに購入です。
・ANIMATRIX : 森本晃司の作品が見たかったので。
・wxRuby *: wxWindows インタフェイス
・Ruby Junction *: junction のサポート?使ってみないとわからないですね。
・Musicextras : 歌詞やジャケットなど、曲のエクストラ情報を自動で取得、だそうです。
・Purple : Ruby オブジェクトの transitive persistance(適切な訳語はなんでしょうか)ライブラリです。つまりメモリデータベース。面白そう。
・Rubydotnetproxy *: Ruby と .NET 言語がお互いのライブラリを利用できるようにする、とのことです。
・Precompiled Ruby distributions for Mac OS X *: Mac OS X 用バイナリ
例) s.move_pen_to(50, 50) #=> 座標 [50, 50] にペン先を移動座標 [x, y] にペン先を移動させます。つまりこのメソッド実行以降の描画の起点が [x, y] からとなります。t05 でいえば、[50, 50] が起点です。そのため、正方形を描くために t04 に対して全体的に 50 ずつ値を足しています。
例) s.draw_line(20, 50) #=> 現在のペン先の位置から、x 座標で 20、y 座標で 50 だけ進めた位置にまで線を描画SWFShape#draw_line は現在のペン先の位置から (dx, dy) 分だけ線を描画します。SWFShape#draw_line を使ったことで正方形を「右、下、左、上」と描画していることが理解しやすくなったのではないでしょうか。このように、正方形のような複数の線から成る一つの図形を描画するときには、相対指定で線を引くメソッド(SWFShape#draw_line)を使った方が良いでしょう。
四角の次は丸が描きたくなるのが(以下略 ですが、残念ながら Ming には円を描く機能は用意されていません。用意されている曲線を描く機能を使って円を描くことになります。自分で作るのは面倒なので、[ming-fun:560] で紹介されている円を描く方法を Ruby に移植します。
require 'ming/ming'
class Ming::SWFShape
def draw_arc(radius, center_x, center_y, start_angle, end_angle)
number_of_segments = 1 + (7 * (end_angle - start_angle) / (2 * Math::PI)).floor
subangle = (end_angle - start_angle) / number_of_segments
angle = start_angle
move_pen_to(center_x + radius * Math::sin(angle),
center_y - radius * Math::cos(angle))
1.step(number_of_segments) do |i|
angle += subangle / 2
control_x = center_x + radius * Math::sin(angle) / Math::cos(subangle / 2)
control_y = center_y - radius * Math::cos(angle) / Math::cos(subangle / 2)
angle += subangle / 2
anchor_x = center_x + radius * Math::sin(angle)
anchor_y = center_y - radius * Math::cos(angle)
draw_curve_to(control_x, control_y, anchor_x, anchor_y)
end
end
def draw_circle(radius, center_x, center_y)
draw_arc(radius, center_x, center_y, 0, 2 * Math::PI)
end
end
件のメールから Dave さんによる実装を移植しました。
例)s.draw_arc(20, 80, 80, 0, Math::PI) #=> 半径 20 の半円弧を座標 [80, 80] を中心にして描く 例)s.draw_circle(25, 200, 200) #=> 座標 [200, 200]を中心とする半径 25 の円を描く弧を最大8つに分けて描画することで円っぽくみせようというものです。角度の指定はラジアンですので
start_angle = 0、end_angle = 2 * Math::PI で(だいたいの)真円が描けます。
では、作成したメソッドを使って円を描いてみましょう。
[t08.rb / t08.swf]例)f = s.add_fill(0xff, 0, 0) #=> 赤で塗りつぶすための SWFFill オブジェクトを作る塗りつぶすメソッドを使うのではなく、塗りつぶしオブジェクトを生成してそれを適用するという方法です。適用するには以下のメソッドを使います。
例) s.set_right_fill(f) #=> 塗りつぶしオブジェクト f を適用。時計回りに塗りつぶす。set_right_fill があるからには set_left_fill もあります。これらをどう使い分けるのかはよくわかりません。どなたかわかる方がいましたら情報をいただけると嬉しいです。
例)f = Ming::SWFFont.new('techno.fdb') #=> techno フォントを使う
次に、Ming::SWFText がテキストを表すオブジェクトです。
例)t = Ming::SWFText.new #=> テキストをとりあえず作る
例)
t.set_font(f) #=> フォントオブジェクト f をセット
t.set_color(0, 0, 0) #=> テキストの色は黒
t.set_height(8) #=> テキストの高さは 8
t.add_string('This is a pen.') #=> テキストをセット
さて、今回のソースでは SWFMovie#add の戻り値を使ってます。
SWFDisplayItem の詳細は次回以降に先送りします。これを得ることで、登録したオブジェクトに対して移動や回転などのいかにも Flash っぽい操作を加えることができるとだけ覚えてください。今回はテキストを読める位置に移動させるために move_to メソッドを使いました。
まあ、これも何故 SWFText#move_to ではダメなのかよくわかりませんが。
不安定な状態で使っていたらレジストリが壊れたので再インストールしました。ついでに Outlook Express を使うのをやめて Becky に移行。Thunderbirdも検討していたのですが、もう少し枯れてからにします。全面的に Linux に移行すりゃいいんでしょうけど、なかなか踏ん切りがつきませんね。
昨日、銀行のキャッシュカードが無効になってしまったので、再発行手続きに行ってきました。有給休暇使って。
暗証番号はメモらない性質なんですが、こういう事態が今後も起きそうなことを考えると、セキュリティより利便性を採ってしまいそうです。
# ネット上のサービスのパスワードはメモりまくりです。覚え切れません。
ついでに粗品として箱に入ったテディベアをもらいました。謎。
最近のコメント:
RSS
![]()
This work is licensed under a
Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).
_ kou [RSSのrdf:aboutとかlinkとかrdf:resourceとかのURLがhttp://localhost/...]
_ だて [あれれ?報告ありがとうございます。 ローカルから更新するとそうなるのかもしれません。]
_ だて [これで直ったかな?]
_ だて [ついでにファイル名を t.rdf から index.rdf に変更しました。]