• 締切済み

カーソルからの泡操作

カーソルから上に向けて泡を出すプログラムがあります. これを,上にではなく,ブラウザ上のある特定箇所に 泡を向かわせるには,以下のプログラムをどのように変更したらよいでしょうか? 教えていただけると,とても助かります. <SCRIPT language="JavaScript"> <!--// Image0=new Image(); Image0.src="awa.gif"; Amount=20; Ymouse=-50; Xmouse=-50; Ypos=new Array(); Xpos=new Array(); Speed=new Array(); rate=new Array(); grow=new Array(); Step=new Array(); Cstep=new Array(); nsSize=new Array(); ns=(document.layers)?1:0; WinHeight=(document.layers)?window.innerHeight:window.document.body.clientHeight; (document.layers)?window.captureEvents(Event.MOUSEMOVE):0; function Mouse(evnt){ Ymouse=(document.layers)?evnt.pageY-20:event.y-20; Xmouse=(document.layers)?evnt.pageX:event.x; } (document.layers)?window.onMouseMove=Mouse:document.onmousemove=Mouse; for (i=0; i < Amount; i++){ Ypos[i]=Math.random()*WinHeight-Ymouse; Xpos[i]=Xmouse; Speed[i]=Math.random()*10+1; Cstep[i]=0; Step[i]=Math.random()*0.1+0.05; grow[i]=4; nsSize[i]=Math.random()*15+5; rate[i]=Math.random()*0.5+0.1; } if (ns){ for (i = 0; i < Amount; i++){ document.write("<LAYER NAME='sn"+i+"' LEFT=0 TOP=0><img src="+Image0.src+" name='N' width="+nsSize[i]+" height="+nsSize[i]+"></LAYER>"); } } else{ document.write('<div style="position:absolute;top:0px;left:0px"><div style="position:relative">'); for (i = 0; i < Amount; i++){ document.write('<img id="si" src="'+Image0.src+'" style="position:absolute;top:0px;left:0px;filter:alpha(opacity=90)">'); } document.write('</div></div>'); } function MouseBubbles(){ var hscrll=(document.layers)?window.pageYOffset:document.body.scrollTop; var wscrll=(document.layers)?window.pageXOffset:document.body.scrollLeft; for (i=0; i < Amount; i++){ sy = Speed[i]*Math.sin(270*Math.PI/180); sx = Speed[i]*Math.cos(Cstep[i]*5); Ypos[i]+=sy; Xpos[i]+=sx; if (Ypos[i] < -40){ Ypos[i]=Ymouse; Xpos[i]=Xmouse; Speed[i]= 6+Math.random()*3; grow[i]=4; nsSize[i]=Math.random()*15+5; } if (ns){ document.layers['sn'+i].left=Xpos[i]+wscrll; document.layers['sn'+i].top=Ypos[i]+hscrll; } else{ si[i].style.pixelLeft=Xpos[i]+wscrll; si[i].style.pixelTop=Ypos[i]+hscrll; si[i].style.width=grow[i]; si[i].style.height=grow[i]; } grow[i]+=rate[i]; Cstep[i]+=Step[i]; if (grow[i] > 24) grow[i]=25; } setTimeout('MouseBubbles()',10); } MouseBubbles(); //--> </script> [参考] http://hp.ms-factory.biz/javak_bubbles2.htm

みんなの回答

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

原理だけ ・上に泡が登る →座標yが正方向から0へ向かって変化する (揺らす為にxが多少変化する場合も有る) ・特定の方向へ向かう →座標xとyが目標へ向かって変化する 「そんな事は判りきってる」って言われそうな勢いの事が書かれているけれど、まずは人が解く場合を考えてからだと判りやすくなるよ。

rouge05
質問者

お礼

なるほど! 基本的なところからよくわかっていなかったので, とても助かります. 迅速に対応していただき,ありがとうございます.(^-^)

関連するQ&A

  • 特定のものにだけスクリプトを有効にする

    今晩は。JavaScript初心者です。 今、雪を降らせるスクリプトを作っています。 外部のjsファイルに記述したスクリプトを、特定のidを付けたdivにだけ有効にしたいです。 -----html------------------------------ <html> <head> <script type="text/javascript" src="js/snow.js"></script> </head> <body> <div id="snow"> </div> </body> </html> -----JavaScript(snow.js)------------------------------ sx = new Array(); sy = new Array(); sp = new Array(); num = 50; scrnx = 100; scrny = 500; function snowWrite() { styl = "<img src='snow.gif' style='position:relative;width:6px;height:6px;z-index:3;top:"; for (i=0; i<num; i++) { sx[i] = Math.floor(Math.random()*100); sy[i] = Math.floor(Math.random()*500); sp[i] = Math.floor(Math.random()*5) + 1; document.write(styl+sy[i]+"px;left:"+sx[i]+"px;' name='snow"+i+"'>"); } } function moveSnow() { for (i=0; i<num; i++) { sy[i] += sp[i]; if (sy[i] > scrny) sy[i] = -10; document.images["snow"+i].style.top = sy[i]; } } snowWrite(); 「document.getElementById」あたりかなと思ったのですが、それだとして(まったく見当違いかもしれませんが)、どこにどう記述してよいのかわかりません。 ご存知の方がいらっしゃいましたら、ご教授いただきたいです。 よろしくお願い致します。

  • 画像を・・・

    画像をランダムで表示させる方法はありませんか? 文字ならいけるのですが・・・・ 文字なら <SCRIPT LANGUAGE="JavaScript"> <!-- Rmes=new Array(5); Rmes[0]="ようこそ"; Rmes[1]="ようこそ"; Rmes[2]="ようこそ"; MyRmes=Math.floor(3*Math.random()); document.write("<FONT style='font-size : 16px; color : #666666'>"+Rmes[MyRmes]+"</FONT>"); //--> これでいけるのですが画像ではできません・・・・ 知っていたら教えてください!

  • このスクリプトでIFが意味を為さないのはなぜですか?

    このスクリプトでIFが意味を為さないのはなぜですか? フリーソフトのSuzukaでマウスでドラッグして絵を描くものを作っています 基本的にはAdobeのものと同じのようです AS3です ウィンドウの左上に張り付いた300*300のマスのなかにだけ書けるようにしたく、 if(0<=_xmouse<=300 && 0<=_ymouse<=300) と加えたのですが全く変化が感じられません 何故でしょうか? if(0<=_xmouse && _xmouse<=300 && 0<=_ymouse && _ymouse<=300)としても変わらず、 ダイナミックテキスト及びトレースで _xmouse, _ymouse が0以上300以下であることを確認しています if以外の間違いということはないと思うのですが・・・ 以下スクリプトです タブを全角スペース2つに置き換えています this.onMouseDown = function(){   //直線を定義 太さ:5,濃紺   lineStyle(5,0x0000BB);   //始点を定義   moveTo(_xmouse,_ymouse);   zahyo.text = "x,y = " + _xmouse + ","+ _ymouse;   //画数に+1   h += 1;   //マウスを動かしたら   onMouseMove = function(){     //現在の座標まで描画     lineTo(_xmouse,_ymouse);     //テキスト同期     zahyo.text = "x,y = " + _xmouse + ","+ _ymouse;     //配列の最後尾に追加     this["xh"+ h + "list"].push( _xmouse );     this["yh"+ h + "list"].push( _ymouse );   };   //マウスが上がったら   onMouseUp = function(){     //描画終了     delete onMouseMove;     //配列をトレース     trace( this["xh"+ h + "list"] );     trace( this["yh"+ h + "list"] );     //次の配列を定義     this["xh"+ (h+1) + "list"] = new Array();     this["yh"+ (h+1) + "list"] = new Array();   }; }; よろしくお願いします

    • ベストアンサー
    • Flash
  • 外部JSファイルでランダム表示と一度クリックで2箇所リンクのものを組み合わせたいんです。

    初心者で申し訳ありません。 外部JSファイルでランダム表示をつかっているのですが、リンクの箇所で一回のクリックで2箇所にリンクするのを組み合わせたいと思ってます。 ランダム表示 <!-- //並べ替え表示スクリプト function Random(x) { //fは掲載する広告数 f =3; var Num = new Array(f - 1); var Chk = new Array(f - 1); var Mess = new Array(f - 1); //***ここに広告表示HTMLの配列作成 Mess[0] = ' <A href="http://aa.com" target="_blank">testtest</A>'; Mess[1] = ' <A href="http://bb.com" target="_blank">testtest</A>'; Mess[2] = ' <A href="http://cc.com" target="_blank">testtest</A>'; //***ランダムで0~f-1の値を並べ替え for (i=0;i<f;i++) // { Num[i] = Math.floor(Math.random()*f); if (Chk[Num[i]] == 1){ while(Chk[Num[i]] == 1){ Num[i] = Math.floor(Math.random()*f); } Chk[Num[i]] = 1; } else { Chk[Num[i]] = 1; } } //HTML作成部分 for (i=0;i<x;i++) // { document.write(Mess[Num[i]]); document.write(Mess[Num[i+1]]); document.write(Mess[Num[i+2]]); } } //--> 上のランダムに出力されるリンクを下のような形みたいに、それぞれのURLが1クリックで2箇所リンクされるようにしたいです。 <A href="http://aa.com" target="_blank" onclick="window.open('http://dd.com')" >test</A> もしお分かりの方がいたら何卒よろしくお願いします。 もしわかりづらかったらごめんなさい。

  • 雪が降るようなスクリプト

    <html> <head> <title>*****</title> <script language="JavaScript"> <!-- function MM_preloadImages() { 以下略 } //--> </script> </head> <body bgcolor=onLoad="MM_preloadImages('images/pic.gif', 以下略)"> 以下略 </body> </html> もともと、上の様なHTMLファイルがあり、そこに雪が降っているようなJavaScriptを入れたいんです。 その雪が降るJavaScriptの以下のサンプルは、Web上で見つけました。 ***** <script type="text/javascript"> <!-- sx = new Array(); sy = new Array(); sp = new Array(); num = 30; //降らせる雪の数 scrnx = 600; //雪の降る範囲:横 scrny = 400; //雪の降る範囲:縦 function snow() { styl = "<img src='snow.gif' style='position:absolute;width:8px;height:8px;top:"; for (i=0; i<num; i++) { sx[i] = Math.floor(Math.random()*600); sy[i] = Math.floor(Math.random()*400); sp[i] = Math.floor(Math.random()*5) + 1; document.write(styl+sy[i]+"px;left:"+sx[i]+"px;' name='snow"+i+"'>"); }} function move() { for (i=0; i<num; i++) { sy[i] += sp[i]; if (sy[i] > scrny) sy[i] = -10; document.images["snow"+i].style.top = sy[i]; }} // --> </script> </head> <body bgcolor="#000000" onLoad="setInterval('move()',100)"> <script type="text/javascript"> <!-- snow(); // --> </script> ***** 例えばもともとOnLoadというスクリプトがあるのですが、そこに別の(雪の)OnLoadはどのように記述したらいいのでしょうか。そういうことが分からないので、haed部分と、body部分に雪の降るスクリプトをどのように入れ込んだらいいのか分からないので教えてください。

  • jqfloat.jsを複数の画像に適用したい

    javascriptで7枚の画像をブラウザの中にランダム配置で表示させ、 さらにjQueryのjqfloat.jsで画像をふわふわ動かす、というものを作っています。 ランダム配置まではうまくいったのですが jqfloatが7枚のうち1枚にしか適用されず困っております。(最後のid='fuwa'のところ) jsの勉強を始めたばかりでスクリプトの書き方が変だったりするかもしれませんが… どなたか対処法を教えていただけませんでしょうか。 どうぞよろしくお願い致します! <script type="text/javascript"><!-- $(document).ready(function() { $('#fuwa').jqFloat({ width: 50, height: 50, speed: 2500 }); }); var images = [ {img : "1.png" , url : "http://1.com"}, {img : "2.png" , url : "http://2.com"}, {img : "3.png" , url : "http://3.com"}, {img : "4.png" , url : "http://4.com"}, {img : "5.png" , url : "http://5.com"}, {img : "6.png" , url : "http://6.com"}, {img : "7.png" , url : "http://7.com"} ]; images.sort(function(){return Math.random() - Math.random();}); function getBrowserWidth ( ) { if ( window.innerWidth ) { return window.innerWidth; } else if ( document.documentElement && document.documentElement.clientWidth != 0 ) { return document.documentElement.clientWidth; } else if ( document.body ) { return document.body.clientWidth; } return 0; } function getBrowserHeight ( ) { if ( window.inneHeight ) { return window.innerHeight; } else if ( document.documentElement && document.documentElement.clientHeight != 0 ) { return document.documentElement.clientHeight; } else if ( document.body ) { return document.body.clientHeight; } return 0; } Imgn=7; for (i=0; i < Imgn; i++){ xpx = 50+Math.floor(Math.random() * (window.innerWidth -280)) + 1; ypx = 30+Math.floor(Math.random() * (window.innerHeight -300)) + 1; thumbs="<div style='position:absolute;left:"+ xpx +"px;top:"+ ypx +"px;' id='fuwa'><a href='"+images[i].url+"'><img src='"+images[i].img+"'></a></div>"; document.write(thumbs); } </script>

  • <div>タグの中にscriptで表示

    プログラムを初めて2年目、JSは一年目です。 配列の文字列をランダム表示したいのですが、<div>タグの中にscriptで表示させるにはどうしたらよいでしょう? ソースは下記です。 ~~~~~~~~~~~~~~~~~~~~~~~~ <script type="text/javascript"> var comment = new Array(3) ;   //配列を作ってます。 week[0] = "なるほど" ; week[1] = "賛成" ; week[2] = "そう思いません。" ; var randnum = Math.floor( Math.random() * 3 ); // 0,1,2のランダム window.onload = function(){ setInterval('vi()' , 2000 ); } function vi(){ var e = document.getElementById('comment'); e.style.visibility = 'visible'; } // 2秒後にメッセージが表示されます。 </script> <div id="comment" style="visibility:hidden; position:absolute; border: 3px ridge gray; background-color:#ffffcc"> ★ここに配列の文字列を、ランダムで表示したい </div> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ document.write(comment[ randnum]) ; をうまく使えないでしょうか? よろしくお願いします。

  • document.write以外の方法での記述法

    javascript無知識なのですが 諸事情により下記のjsをdocument.write以外の方法で記述しなければならないのですが document.write以外の記述で同じ効果が得られる記述法ってないのですか? あればご教示よろしくお願いします。 <script language="javascript"> <!-- function rotationAdv() { m = 0, x = 0, y = 0; ad = new Array(); adv = new Array(); hit = new Array(); hit[0] = 1; adv[0] = 'A'; hit[1] = 1; adv[1] = 'B'; hit[2] = 1; adv[2] = 'C'; for(i=0; i<=hit.length - 1; i++) { m += hit[i]; } n = Math.floor(Math.random() * m); n++; for(i=0; i<=hit.length - 1; i++) { x = y; y += hit[i]; if(x<n && n<=y) ad = adv[i]; } document.write(ad); } rotationAdv(); //--> </script>

  • IE11 javascriptについて

    すみません、IE11なってから、以下のjavascriptが動かなくなりました。 画像は、フェードイン、フェードアウトを繰り返し、画像はランダムに移動します。 全部のロジックを書いてしまいましたが、 何処がIE11から変更されたかが解らなくて、困っている所です。 何処を直すのか、全部聞くのもあつかましいと思いました、 どのあたりを見直しすれば宜しいですか。 教えて頂ければ幸いです。 <SCRIPT language="JavaScript"> <!-- var img = new Array(); img[0] = new Image(); img[0].src = "img/4031.jpg"; img[1] = new Image(); img[1].src = "img/4032.jpg"; img[2] = new Image(); img[2].src = "img/4031.jpg"; img[3] = new Image(); img[3].src = "img/4032.jpg"; img[4] = new Image(); img[4].src = "img/4031.jpg"; imgMaxSizeW = 171; imgMaxSizeH = 141; alphaTimer = 10; stopTimer = 2000; nextImgTimer = 1000; _dom=(document.all?3:(document.getElementById?1:(document.layers?2:0))); function getWindowSize() { if(_dom == 1 || _dom == 2) { win_width = self.innerWidth; win_height = self.innerHeight; } if (_dom == 3) { win_width = document.body.clientWidth; win_height = document.body.clientHeight; } } function showLayer(layerName){ if (_dom == 1) document.getElementById(layerName).style.visibility = "visible"; if (_dom == 2) document.layers[layerName].visibility = "show"; if (_dom == 3) document.all(layerName).style.visibility = "visible"; } function hideLayer(layerName){ if (_dom == 1) document.getElementById(layerName).style.visibility = "hidden"; if (_dom == 2) document.layers[layerName].visibility = "hide"; if (_dom == 3) document.all(layerName).style.visibility = "hidden"; } function writeHTML(layerName,html) { if (_dom == 1) { var div = document.getElementById(layerName); while(div.hasChildNodes()) div.removeChild(div.lastChild); var range=document.createRange(); range.selectNodeContents(div); range.collapse(true); var cf=range.createContextualFragment(html); div.appendChild(cf); } if (_dom == 2) { var div = document.layers[layerName]; div.document.open(); div.document.write(html); div.document.close(); } if (_dom == 3) document.all(layerName).innerHTML = html; } function moveLayerTo(layerName, x, y){ if (_dom == 1) { document.getElementById(layerName).style.left = x + scrollX; document.getElementById(layerName).style.top = y + scrollY; } if (_dom == 2) { document.layers[layerName].left = x + pageXOffset; document.layers[layerName].top = y + pageYOffset; } if (_dom == 3) { document.all(layerName).style.pixelLeft = x + document.body.scrollLeft document.all(layerName).style.pixelTop = y + document.body.scrollTop; } } function changeAlpha(layerName) { if (_dom == 3) { if (alphaCount < 200) { alphaCount += 2; op = alphaCount > 100 ? 100 - (alphaCount-100) : alphaCount; document.all(layerName).filters["alpha"].opacity = op; if (op == 100) { tim = setTimeout("changeAlpha('"+layerName+"')", stopTimer); } else { tim = setTimeout("changeAlpha('"+layerName+"')", alphaTimer); } } else { hideLayer(layerName); clearTimeout(tim); tim = setTimeout("setAlphaImgPos()",nextImgTimer); } } else { setTimeout("setAlphaImgPos()",nextImgTimer*2); } } var imgCount = 0; function setAlphaImgPos() { writeHTML("imgLay",'<IMG src="' + img[imgCount].src + '" border="0">'); imgCount++; if (imgCount >= img.length) imgCount = 0; getWindowSize(); sX = Math.floor(Math.random()*(win_width-imgMaxSizeW-10)); sY = Math.floor(Math.random()*(win_height-imgMaxSizeH-10)); moveLayerTo("imgLay",sX,sY); showLayer("imgLay"); alphaCount = 0; changeAlpha("imgLay"); } window.onload = setAlphaImgPos; // --> </SCRIPT>

  • 特定の時間に複数のメッセージからアットランダムに表示する

    1 特定の時間(たとえば、朝の7時から8時まで)に2 複数のメッセージ(たとえば、どこかのページへのリンク)の中からランダムに表示するジャバスクリプトを作りたいと思っています。 1と2は別個のスクリプトがあるのですが、これを統合すればいいのでは、と思ってやっているのですが、わかりません。なにとぞ宜しくお願いいたします。 ================= 1 mes=new Array(24); mes[0]=""; mes[1]=""; //略 mes[23]=""; function timer(){ myDate=new Date(); myTime=myDate.getHours(); document.write(mes[myTime]); } timer(); //--> 2 var quotes=new Array() quotes[0]='メッセージかリンク' var whichquote=Math.floor(Math.random()*(quotes.length)) document.write(quotes[whichquote])

専門家に質問してみよう