聖闘士聖矢のアレを作ってみたが、絵心が無いので誰か続き頼む。

  • このエントリーをはてなブックマークに追加
  • 0

trick7さんがTeraFire(ブログ記事)とTeraClock(ブログ記事)という非常に面白いライブラリを公開されてたので、ちょっと使ってみた。ガスコンロにしか見えないdemoはこちら
一応イメージとしては、サンクチュアリの黄道十二宮にある、全て消える前に何とかして矢を抜かないとアテナが死んでしまうと言うあの火時計をイメージしたものを作ってみたのだが、時計の文字盤部分が絵心の無い俺には難しすぎて作れなかった。現状では、1時間に1個火が消える、何やら不気味な火の玉集団になってしまっている。

一応、午前/午後0時が全部火がついてる状態で、それから1時間ごとに1つ1つ火が消えていく。時刻はギリシャに合わせてある(GMT+2)。なお、12時になると火が全部消えるかと思いきや、逆に全部点く。

こんなものを作るために、TeraFireとTeraClockのソースを躊躇無く書き換え、コミットしてしまった。ゴメンよ。

聖闘士星矢 THE MOVIE BOX [DVD]

販売元:東映ビデオ( 2004-08-06 )

定価:¥ 21,384 ( 中古価格 ¥ 5,932 より )

Amazon価格:¥ 29,799

時間:212 分

4 枚組 ( DVD )



TeraFireのココを変えました!

まずTeraFireだが、コンストラクタに引数を2つ追加してみた。

ActionScript

  1. public function TeraFire(xPos:Number=0, yPos:Number=0, fireWidth:Number=30, fireHeight:Number=90){

ActionScript

  1. public function TeraFire(xPos:Number=0, yPos:Number=0, fireWidth:Number=30, fireHeight:Number=90, fireColorIn:uint = 0xFFCC00,fireColorOut:uint = 0xE22D09){

これで何が出来るかと言うと、炎の色が変えられる。今回、どうしても青い炎を作りたかったので変更。

TeraClockのココを変えました!

次にTeraClockだが、newした直後にhoursを取得した所、何故か0だった。

ActionScript

  1. var clock:TeraClock = new TeraClock(2);
  2. trace(clock.hours);//常に0

どうやら、時刻の設定をENTER_FRAMEのイベントハンドラ内でのみ行っていたのが原因らしい。通常、時計であれば毎秒表示を更新するだろうからあまり問題にはならないのかも知れないが、今回俺が作ったのは1時間ごとにしか変更されないので、ちょっと困る。
そこで、コンストラクタ内で1回、無理矢理イベントハンドラ関数を呼び出してみた。

ActionScript

  1. public function TeraClock(GMT:int = 9) {
  2.     _gmt = GMT%24;
  3.     this.enterFrameListener(null);//←ここを追加
  4.     addEventListener(Event.ENTER_FRAME, enterFrameListener);
  5. }

文字盤

炎は、半径85の円上に並んでいるので、半径90の文字盤を作ってください誰か。
それとも、文字盤を読み込んで動くブログパーツっぽいものにしてみるか・・・無理か?

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク