カテゴリー『 Script 』

≒ Ballsの件

昨日Androidアプリ新作公開しました。
Balls

我ながらクソみたいに単純なopenGLのデモなんだけど一ヶ月と10日も製作に費やした。面白かった。
デモだけど広告入れました。お金欲しいもあるんだけど、ユーザさんの動きがある程度分かるんですよね。アナリティクス入れればもっと詳しく分かるんだろうけど、ColorExtractorに入れたのは上手く動いてないんです。今度もう一度ちゃんと設定してみよう。

3D衝突計算は「ActionScript 3.0 アニメーション」にお世話になりました。中古で無料配送だったから1000円以下で手に入って助かったw なんでActionScript?とは思うけど、色々ぐぐったりした中で一番説明が分かりやすかった。計算式には言語関係ないしね。

一番苦労したのはボールをダブルタップで追加/削除の部分。three.jsならRayCasterクラスがあるから簡単なんだけど、今回もフレームワークは使いたくなかったので(たぶんUnityとか使えばそういうのあるよね)、試行錯誤しながら自作ロジック組んだ。といっても教科書(OpenGL ES 2.0 Androidグラフィックスプログラミング)の「9.2物体を選択する」の手法を拡張しただけですけどね。追加は目に見えてるワイヤの立方体よりちょっと小さい立方体とxyz軸に沿って平面立てて、glReadPixelsしてる。タイミングがシビアで苦労した。ボールの番号はrgb値使って、r=100の桁、g=10の桁、b=1の桁を入れてます。openGLはr値は5ビットなので32まで数えられるから、ボールの最大数は3200のはず。はずって言うのはその数に達する前にCPUかメモリの限界で落ちるだろうから。Playストアにスクショで張ってるけど、300個くらいまでなら一応滑らかに動きます。機種によりますけどね。

以上、言葉足らずの説明ですみません。早く次のアプリ作り始めたいんだよねw アプリ公開報告でした。

≒ canvasの練習

少し時間が取れるようになって趣味のコーディング再開した。 一年半ほどの浦島状態で、Javaアプレットが使えなくなったのが残念で仕方ない。

言うててもしょうがないのでcanvas練習開始。 既製のアプレットの書き換えもしたいんだけど、教科書(HTML5 Canvas)の例題をやってるうちに脱線。 以下備忘。

相変わらずブラウザごとの挙動に苦労しながら最初のデモが出来たんだけど、レンジを最大にするとほとんどの場合固まる。

「クソ-。シングルスレッドはこれだから!アプレット復活の方法無いかなー」って思ってたんだけど、使えないUI設置してるのが問題だと思って、クリックでボールを一つずつ増やすように変更。 これだと300個くらいまで無問題。

一気に何十回もfor回したら固まるのは当たり前か。こういうのをプログラミングの工夫っていうのか(棚上げ:自分のコーディング能力)。 …でもやっぱりアプレットではこんな苦労しなかったと思ってしまうw

diffColors

次は自宅サーバ再開してtomcat走らせて遊ぼう。twitterデータのビジュアライズもやりかけで止まったままだし。やっぱりJavaを触りたい。

≒ scriptaculousEffectsSample2

昨日のを直しました。Chromeでも動きます。これです。

Chromeのデベロッパーツールで中を見てみたら、何故かa要素だけはちゃんと挿入されててその中身のimg要素がキレイに入っていない状態。
憶測だけど、ChromeのinnerHTMLメソッドは孫要素は生成しないのかもしれない。調べてもわからなかったです。

で、いつもの泥縄式対策。a要素とその中のimg要素にid付けて、

  1. #img1が無ければ以下の処理開始(だってFireFoxではちゃんとimg要素存在してるんだからね)。
  2. 文字列からimgタグ部分だけを切り出し。
  3. さらにsrc部分を切り出し。
  4. さらにさらに src=” と ” を削る。裸のurl。
  5. 新たにimg要素を作り
  6. 4のurlをsrcプロパティに指定。
  7. できたimg要素を#aTagにappendChildしてできあがり!

奇特な方はソース見てみてください。上の通りコード書いてます。恥ずかしい。

でも出来たからよし。終了。と言いたいのだけど課題も残った(いやもともと課題だらけですけどね)。

受け取ったJSONはオブジェクト。それを文字列として加工してるんだから無理があるのは分かってるんだけど、例えばそのままsubstringメソッドを使うと、Chromeの場合は怒られる。FireFoxには無視されちゃう(処理が止まる)。なので所々「+=””」ってやって文字列にしてる。一度やれば良いと思ったら、何故か勝手に(string?)オブジェクトに戻ってる。うーん我ながらよく分かってないなー。というかここまで書いて、JSONのままオブジェクトとして最後まで扱えばもっとエレガントな感じに出来るのかなと思った。次の課題とさせてください。ほんとに終了!

追伸:
 今日は何故かLANが遅い。CatDogViewer触って見たけどやっぱり先読み必要だなー。とてもLightBoxが機能しているとは言えない状態。
それとtitleとlinkはやっぱり表示が必要だな。法的にはグレー。礼儀的に×。といってもスクエア表示のリンクはLightBoxに使ってるからマウスオーバーで表示ってのは駄目、というかあんまりエレガントでない。例えば吹き出しを出させるとかはかっこわるいよね。
 ボタンでスクエア表示内がtitleとlink表示に変化とかどうだろう。それだとスムーズにリンク先に移行できるしね。
以上。追伸で独り言でした。