« 2007年12月 | トップページ | 2008年4月 »

要素の取得

JavaScript。
最近はDOMとかAjaxとかそんな単語も出てきて、昔よりも使えるメソッドが増えてきて正直何がDOMで何がアレなのか分かってないのですが(^^;)
いつかちゃんと勉強したいとは思うんですが、まぁいつかなんて日はいつだ!て突っ込まれたら笑うしかない汚いオトナです。オトナはすぐに「いつか」なんて言っちゃうよ!

で、そんなことを言うほどいい加減な割に私はJavaScriptが好きです。
お手軽なので。簡単、という意味ではなくて、テキストエディタがあってブラウザがあれば動かせるじゃないですか。TomcatもIISもなーも要らない訳で、そういうトコが好きなのです。
暇潰しにロジック組んでみる、とかに最適。

最近仕事でよく使う(羽目に陥っている)んですが、
名前指定して要素にアクセスする、という辺りで色々と。
昔はそれこそ要素名が動的だったりすると
■obj = eval("document.forms[0]." + strObjNm);
なんてやってたんですが、最近ではとんと見かけなくなりましたね、eval。
以降、elementsなんて使ってたりもしました。
■obj = document.elements(strObjNm);
これはまだ見かけるかなあ。んで、最近出てきた(存在に私が気付いた、が正しい)のが、
■getElementsByName("xxxx")
 <INPUT type="text" name="xxxx">
 nameアトリビュートを指定してエレメントを取得。
■getElementById("yyyy")
 <INPUT type="text" name="xxxx" id="yyyy">
 idアトリビュートを指定してエレメントを取得。
■getElementsByTagName("INPUT")
 <INPUT type="text" name="xxxx" id="yyyy">
 INPUTを指定してエレメントを取得。
IDは、1ページ内で重複して付けるのは×なので、それだけElement。それ以外は複数存在するのでElementsとなって、こちらは配列で取得されます。
これらはそれぞれdocumentノードに対して呼ばれるのが普通ですが、elementのメソッドとしても存在するので、elementからでも使用することが出来ます。

…で、使ってみた感想。
hiddenやら<SPAN id="XXXX">やらがやたらある画面で、動的な要素名で何か取得する場合、getElementByIdが一番早いと思いました。
idが指定されているelementが少ないから??
中でどういう動きをしているのか分からないのですが、体感速度ではダントツだったです。
ただ、今やっているのがstruts->jsp使用なのですが、カスタムタグ部分が共通チームの管轄になっていて手が出せず、なので、勝手にID名とかをhidden項目とかにくっつけられなくて、hiddenオブジェクトの取得の時とかにgetElementByIdが使用できない……orz
<SPAN>タグとかには付いてるのにー。

てことで、カスタムタグじゃない<TABLE>タグなんかにIDくっつけて、ノード(という表現であっているのか…)取得、そのノードに対してgetElementsByTagNameやgetElementsByNameかます、という方法で検索範囲を限定して速度出してます。

とりあえず備忘録含めたまとめ。

参考にしたページ。
http://developer.mozilla.org/ja/docs/DOM:document.getElementsByTagName
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter05/002/index.html

| | コメント (0) | トラックバック (0)

FPSについて

FLASHでいうFPSとは、動画の細かさのこと、と解釈しています。

アニメのコマ数や、パラパラ漫画の枚数と同様で、値を高くすれば、その分滑らかな動きが可能になるということです。

…で、今結婚式の最後に上映する参列者の名前にメッセージを添えて流す、エンドロールを作成しているのですが、どうもメッセージがカタカタカタカタするんですよね…FPSを上げて対応出来ないのかと考えたのですが、どうもうまくいきません。しかも、最初の数人のお名前が出た時はそうでもないのに、後にくるに従ってカタカタが酷くなる様な…と思ってぐーぐる先生に聞いてみたら、案の定でした。

FPSを指定していても、結局処理速度が落ちてくればFPSも落ちる、ということで…なるほどそういうことになるのか…!現在、80fpsで指定しているのですが(単にもっと滑らかにならないかなーと試していてどんどん上がってしまっただけで、元々80なんて高い数字指定していた訳ではないですが^^;)、名前が増えていけばいくほど、どんどんとFPSは下がっていき、最終的に40前後で動いている様子でした。

※FPSチェックにはZEPHさんこちらのページから部品いただきました!ありがとうございますー!

大体、30~60程度のFPSがあれば…ということだったのですが、40だと少し物足りないご様子。

解消できるかどうか、ちょっと考えてみます。うーむ。テキストオブジェクトしか持ってないのにそんなに重たいってのか…?

重たくなっている原因:

■画面をフルスクリーンにしている。フルスクリーンでなければ劇的に改善されている模様。サイズの再計算が重たいということ?フルスクリーンにしなければ、大体60~70くらい。

■FLASHが入ってないマシンで単独再生させるために、swf2exeを使用しているのですが、こちらも少し問題あるよう。最初、30程度から入って、最終的に45~55程度に落ち着いてました。うーん。

★…とりあえず、何を置いても動かしてるオブジェクトが多いのが原因だった模様です。onEnterFrameで動かしていたので、かなりの負荷がかかってたみたい…?それにしてもそんなに多くないのですが。うーん。

名前+メッセージのテキストボックスで1MCとしていたのを、2人分の名前とメッセージのテキストボックスをまとめて1MCにしました。これで単純にMCの数は半分。です。後は速度を緩めて画面上に表示されるMCの数を減らす、といった対策で、50FPSまで出るようになりました。思うほどかくかくもしないし。これだとフルスクリーン表示でも大丈夫でした。とりあえずこれでいってみますー。

| | コメント (0) | トラックバック (0)

jdkとjreは何が違うのか。

…と思って検索したら非常に的確なお答えを書かれていました。

毎度のことながらお前そんなこと知らなかったのかというアレですがそこはそれ。

+++引用元:http://javafaq.jp/S000.html+++

>JRE と JDK はどう違うのですか?
>
>
>[S000 A-03]
>JRE, JDK はそれぞれ Java Runtime Environment, Java Development Kit の略で、
>前者は、JDK をベースに作られた Java のプログラムを実行する際に必要になる JVMと
>クラスライブラリのパッケージで、後者は、開発者向けのコンパイラなどのツールと
>クラスライブラリのパッケージです。
>Java 2以降では、JDKをSDK(Software Development Kit)と呼ぶようになりました。
>SDKにはJREが含まれているので、SDKを導入した開発者は別途JREを入手して導入する
>必要はありません。
>また、JRE は自分の作成したアプリケーションと共に再配布することが可能です。

…とのことでした。またひとつかしこくなった。

| | コメント (0) | トラックバック (0)

« 2007年12月 | トップページ | 2008年4月 »