アプリ版:「スタンプのみでお礼する」機能のリリースについて

親ウインドウのボタンをクリックすると、
サイズ400×300のサブウィンドウがモニタ画面の左上(0,0)にオープンするようにしました。
このサブウィンドウは、モニタ画面に現れると同時に、
まずは、ツツーッと下にすべってタテ位置のみモニタ画面中央に行き、
行き着いたところで今度は、右方向にツツーッと滑って、
最後にはモニタ画面のど真ん中に配置されるようにしたかったのです。

そこで、サブウィンドウ内には、以下のスクリプト(onload)を書きました。

<script language="javascript">
<!--
var disW= screen.availWidth;
var disH= screen.availHeight;
var cX=disW/2-200;
var cY=disH/2-150;
var pX=0;
var pY=0;
var timerID;
function moveWin(){
if(pY < cY){
pY+=5;
window.moveTo(0,pY);
timerID=setTimeout("moveWin()",1);
}
if(pY==cY){
pX+=5;
window.moveTo(pX,cY);
timerID=setTimeout("moveWin()",1);
}
else{
clearTimeout(timerID);
}
}
//-->
</script>

でも、うまくいきません。

ふたつめのifがいけないのでしょうが、
未熟なためどうしてなのかわかりません。

どなたか、教えてください!
よろしくおねがいします。

A 回答 (1件)

まず、2つ目のif文にelseをつけないと、最後のelseが有効になってしまい、setTimeoutがキャンセルされます。


その次に、pY==cYになることはありませんのでpY>=cYで判定するか、pY==cYになるように作り変える必要があります。
また、こう換えると右へスライドしたウィンドウを停めるところがありませんので、最後のelseはX軸を停める必要があります。
書き換えると以下のようになりました。
----
<script language="javascript">
<!--
var disW= screen.availWidth;
var disH= screen.availHeight;
var cX=disW/2-200;
var cY=disH/2-150;
var pX=0;
var pY=0;
var timerID;
function moveWin(){
if(pY < cY){
pY+=5;
window.moveTo(0,pY);
timerID=setTimeout("moveWin()",1);
}
else if(pY>=cY){
pX+=5;
window.moveTo(pX,cY);
timerID=setTimeout("moveWin()",1);
if(pX>=cX) {
clearTimeout(timerID);
}
}
}
//-->
</script>
    • good
    • 0
この回答へのお礼

madmanさんへ
簡潔で完璧なご回答でした。
本当にありがとうございました。

お礼日時:2002/02/02 21:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!