ruby-aws を Ruby 1.8.5 でも使うためのパッチ

May 6th, 2009

Amazon アソシエイトに登録して早速アサマシろうとしたら上手くいかなかった。

ruby-aws が Ruby 1.8.6 から導入された instance_variable_defined? を使ってるせいのようだ (このサーバーに入ってる Ruby は 1.8.5) 。

--- aws.rb.org	2009-03-29 08:04:23.000000000 +0900
+++ aws.rb	2009-05-06 12:42:22.000000000 +0900
@@ -314,10 +314,10 @@
 
 
       def to_s	# :nodoc:
-	if instance_variable_defined?( :@__val__ )
+	#if instance_variable_defined?( :@__val__ )
 	  return @__val__ if @__val__.is_a?( String )
-	  remove_val
-	end
+	#  remove_val
+	#end
 
 	string = ''

で、とりあえず動いた。

パスが重なった時の描画

May 5th, 2009

ちょっとしたことだけど、メモ。

昔、Guilloches を書いた時、初めは線をつないでいく部分をこうしていた。

g.lineStyle(1, color, 0.3);
g.moveTo((r * 2 + R + p) * scale, 0);

for (var i:int = 1; i <= steps; i++) {
	t += dt;
	x = (rR * Math.cos(t) + rp * Math.cos(rR/r * t)) * scale;
	y = (rR * Math.sin(t) + rp * Math.sin(rR/r * t)) * scale;
	g.lineTo(x, y);
}

が、これだとこんな感じになって線の重なりが表現できない。

仕方なく bitmapData にちょっとずつ draw するという変なことして重なった部分がより濃くなるようにしていた。

g.lineStyle(1, color, 0.3);
g.moveTo((r * 2 + R + p) * scale, 0);

bitmap.lock();
bitmap.fillRect(bitmap.rect, 0x000000);
for (var i:int = 1; i <= steps; i++) {
    t += dt;
    x = (rR * Math.cos(t) + rp * Math.cos(rR/r * t)) * scale;
    y = (rR * Math.sin(t) + rp * Math.sin(rR/r * t)) * scale;
    g.lineTo(x, y);
    if ((i & 7) == 0) {
        bitmap.draw(shape, matrix);
        g.clear();
        g.lineStyle(1, color, 0.3);
        g.moveTo(x, y);
    }
}
bitmap.unlock();

でも実はこれでいいことにちょっと前気づいた。

g.lineStyle(1, color, 0.3);
g.moveTo((r * 2 + R + p) * scale, 0);

for (var i:int = 1; i <= steps; i++) {
	t += dt;
	x = (rR * Math.cos(t) + rp * Math.cos(rR/r * t)) * scale;
	y = (rR * Math.sin(t) + rp * Math.sin(rR/r * t)) * scale;
	g.lineTo(x, y);
	g.moveTo(x, y);
}

パスを一旦切ってやればよかったみたい。

« ‹ 1 › »