- ベストアンサー
ジャバスクリプト、にお詳しい方!教えて下さい!!
初心者ですが、会社HPを作成している者です、 自分で色々検索してみたのですが、分らない部分だけ、いくつか質問させて下さい! 1)TOPページに画像(写真)を入れ、残像を残しながら次の画像へ移る・・・というふうにしています。ですが、1つ目(下の欄にある「pc5.jpg」の画像)だけが最初に一瞬しか表示されません。他の画像と同じ時間表示するにはどうすればよいのでしょうか? ↓タグです。 <SCRIPT language="JavaScript"> <!-- var time=3; var rtime=7000; var image= new Array(); image[0]='./img/pc1.jpg'; image[1]='./img/pc2.jpg'; image[2]='./img/pc3.jpg'; image[3]='./img/pc4.jpg'; image[4]='./img/pc7.jpg'; image[5]='./img/pc.jpg'; var ii=0; function imgchange(){ imgframe.filters.blendTrans.Apply(); imgframe.filters.blendTrans.duration=time; imgframe.src=image[ii]; imgframe.filters.blendTrans.Play(); ii=ii+1; if (ii>5) ii=0; t=setTimeout('imgchange()',rtime); } //--> </SCRIPT> ~中略~ <img src="./img/pc5.jpg" width="698" height="300" id="imgframe" style="filter:blendTrans"> 2)if (ii>5) ii=0;これは、画像が5枚目にきたら0へ戻る、という意味まではわかるのですが、”最後の5まできたらそこで画像をストップさせる”ようにするにはどこをどう書き換えれば良いですか? あと、これはどうしようもないことかも知れませんが、 写真に文字を入れる際に「Jtrim」という無料ソフトを使っています。 ですが、アップして確認すると、文字がぼやけてしまいます(にじんでいるような・・) 上記の画像(写真)に、それぞれ文字を書き込みたいのですが、やはりきちんとしたソフトを使わなければ無理ですよね・・? 質問ばかりで申し訳ありませんが、どうぞ宜しくお願いいたします!!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1様がすでに、きちんと回答なさっているのですが… 1) >どこを書き直せばよいのかわからず・・・よかったら教えてください #1様もおっしゃていますが、ご提示の範囲では呼び出していないので(質問者様が省略した部分にあるので、回答者には不明)、どこを直せばいいのかわからないのです。 当たるも八卦の想像では、<body onload="imgchange()">みたいになっているのかもしれません。(←不明情報からあてずっぽうで書いているだけ) いきなりimgchangeを呼ばないで、同じようにsetTimeoutで呼び出せば、時間が経ってから始まるようになります。 (見た目に表示されてから、onloadまでに若干のタイムラグがあるので、少し時間を短めにすると同じ時間に感じるかも…) 2) >動かなくなってしましました もしも、1)への補足の記載通りに書き換えたのであれば、構文エラーになっていると思われます。 もとのコードから、 if (ii>5) ii=0; の1行を削除し、次の1行を#1様の示した3行に置き換えていますか?(結果的に最後は}が2個続くことになる。) (画像)>アップして確認すると、文字がぼやけてしまいます 「アップ」しては「アップロード」してですよね?(「ズームアップ」してではないですよね?) 画像を作成した後で、画像ソフトで再度開いて、表示サイズを最終使用サイズに合わせて確認してみてください。基本的にはブラウザ上でもほぼその状態で表示されるはずです。 もし、作成時はにじんでいなくて、開いたときににじんでいるのであれば、 圧縮率を下げればなんとかなるかも。 それでもダメなら、使用文字をビットマップフォントにしてアンチエイリアスをオフにしてあげれば改善すると思います。 あと、これも#1様がご指摘ですが、filtersはIE専用コードですので、他のブラウザでは機能しません。 イントラ内などIE専用に限定できる環境ならかまいませんが、一般公開であれば、画像が入れ替わって見えない閲覧者が多くいるということをお忘れなく。
その他の回答 (1)
- os6v100i
- ベストアンサー率44% (16/36)
1) 最初のimgchange()はどのタイミングで呼ばれていますか? ちょっと、提示されたソースではわからないのですが、ロードされていきなりimgchange()が呼び出されれば初期画像であるpc5.jpgは一瞬で書き換わってしまうと思います。 2)iiが5を超えたらタイマーの設定をやめればストップします。 たとえば if (ii <= 5) { t=setTimeout('imgchange()',rtime); } とすればよいと思います。 文字がにじむとのことですが、jpegファイルに保存するときのパラメータ(圧縮率)によっては顕著になることもあるかと思います。 JTrimで名前をつけて保存するときにJPEGのオプションを設定できますので画質が高くなるよう設定してみてはどうでしょうか? あるいは、imgタグのサイズと画像サイズが不一致で、汚くなるとか? Jtrimは確かに無料のソフトですが、「きちんとした」ソフトですよ?^^; あと、このコード、IEでないとたぶん望んだように動かないですよ?
お礼
早急なアドバイス、感謝します!! 1)仰るとおり、いきなりimgchange()が呼び出されているのだと思います(汗 このソースは、そのままコピーして使っているので、どこを書き直せばよいのかわからず・・・よかったら教えてください(TT) 2)詳しいソースを書いてくださり有難うございます! ↓元の if (ii>5) ii=0; t=setTimeout('imgchange()',rtime); } の部分を ↓教えていただいた if (ii <= 5) { t=setTimeout('imgchange()',rtime); } としたとこころ、画像が最初の「pc5.jpg」から動かなくなってしましました**;??? それから、Jtrimの件ですが、 >>あるいは、imgタグのサイズと画像サイズが不一致で、汚くなるとか? これは、大丈夫です!! でも画質の設定のことを知りませんでした!早速確認してみます!!
お礼
お礼が遅くなってしまいすみませんっ!m(__)m 1)#1様が的確なアドバイスをしてくれたことは、なんとなくわかるのですが、何を質問すれば良いのかもきちんと理解していないというか、私の知識不足なのですが、(それくらい勉強してから質問しろ!と言われる事も承知で質問させていただきました) fijillin様の、さらに細かく書いてきださったアドバイスのおかげでなんとなくわかってきました!! >><body id="bodyid"onLoad="imgchange()"> 呼び出しがこうなっています。これが「直接に呼び出している」ということですよね・・。 >>同じ様にsettimeで呼び出せば~ <body id="bodyid"onLoad t=setTimeout('imgchange()',rtime);> こうしたら最初の画像で止まってしまいました>< ↑これに関してはも少し頑張ってやってみます。。。 2)>>(結果的に最後は}が2個続くことになる。) 仰る通り、わざわざ}を一つ消していました^0^; もう一度やってみて、きちんとできました!! 「アップロード」です。サイズは毎回ソフトでも確認しているのですが、#1様から教えていただいた高度が、確認したら80%になっていましたので、 これを100%にしたら、にじみがほとんど改善されました。 (白字に文字を書く場合は綺麗なのですが、バックに色をつけたり、画像の上から文字を書くと少しにじみが気になってしまいます) >>使用文字をビットマップフォントにしてアンチエイリアスをオフにしてあげれば改善すると思います。 これはJTrimについている機能でしょうか?見たのですが、探しきれませんでしたm(__;)m >>これも#1様がご指摘ですが、filtersはIE専用コードですので、他のブラウザでは機能しません。 色々教えて下さり、有難うございます。 私自身IE??イントラ??くらいのレベルなもので・・・汗 ようするに、最初の画像しか映らない、画像が入れ替わらない、という場合もあるって意味ですよね。覚えておきます! とても分かりずらい質問に丁寧にお答えくださり、有難うございました。とても勉強になります^^ 今日これからまた頑張って色々やってみます!