NodeBox on AS3
まだ作ってない。
- NodeBox on Jython なソフト「NodeJythox」を作ってみた - Web2.0職人への軌跡 http://d.hatena.ne.jp/akio0911/20080308/1204989711
Jython版はもうできたらしい。
なのでとりあえずAS3版も途中まで作る
>>> import compiler >>> data = """ SIZE = 600 size(SIZE, SIZE) z = 1+1j colormode(RGB, 1) for i in range(30): fill(color(0.5, 0.3 + 0.02 * i, 0.5, 0.1)) rotate(i * -0.47) rect(5 * i, 5 * i, 100 + 10 * i, 100 + 10 * i) """ >>> >>> compiler.parse(data) Module(None, Stmt([Assign([AssName('SIZE', 'OP_ASSIGN')], Const(600)), Discard(CallFunc(Name('size'), [Name('SIZE'), Name('SIZE')], None, None)), Assign([AssName('z', 'OP_ASSIGN')], Add((Const(1), Const(1j)))), Discard(CallFunc(Name('colormode'), [Name('RGB'), Const(1)], None, None)), For(AssName('i', 'OP_ASSIGN'), CallFunc(Name('range'), [Const(30)], None, None), Stmt([Discard(CallFunc(Name('fill'), [CallFunc(Name('color'), [Const(0.5), Add((Const(0.29999999999999999), Mul((Const(0.02), Name('i'))))), Const(0.5), Const(0.10000000000000001)], None, None)], None, None)), Discard(CallFunc(Name('rotate'), [Mul((Name('i'), UnarySub(Const(0.46999999999999997))))], None, None)), Discard(CallFunc(Name('rect'), [Mul((Const(5), Name('i'))), Mul((Const(5), Name('i'))), Add((Const(100), Mul((Const(10), Name('i'))))), Add((Const(100), Mul((Const(10), Name('i')))))], None, None))]), None)]))
すでにJythonというPython処理系があるJavaに比べて、AS3でPythonのコードを直接動かすというのは労力が多い。こういうPythonのコードをこういう構文木にしてからAS3のコードに変換するのがいいと思った。思っただけでまだ作ってはいない。NodeBox extends Spriteなクラスを作ってovalとかはそのメソッドとして実装すると楽かな。