ひな形スクリプト講座26

 

[ひな形スクリプト講座1][ひな形スクリプト講座2][ひな形スクリプト講座3][ひな形スクリプト講座4][ひな形スクリプト講座5][ひな形スクリプト講座6][ひな形スクリプト講座7][ひな形スクリプト講座8][ひな形スクリプト講座9][ひな形スクリプト講座10][ひな形スクリプト講座11][ひな形スクリプト講座12][ひな形スクリプト講座13][ひな形スクリプト講座14][ひな形スクリプト講座15][ひな形スクリプト講座16][ひな形スクリプト講座17][ひな形スクリプト講座18][ひな形スクリプト講座19][ひな形スクリプト講座20][ひな形スクリプト講座21][ひな形スクリプト講座22][ひな形スクリプト講座23][ひな形スクリプト講座24][ひな形スクリプト講座25][ひな形スクリプト講座26][ひな形スクリプト講座27][ひな形スクリプト講座28][ひな形スクリプト講座29][ひな形スクリプト講座30][参考資料索引]

今回はMetaCreationsフィルタでランダムスライドショーを行います。

再掲:フィルタのタイプ名と対応Copyrightコード

filterValue

CopyrightValue

ColorFade

{2A54C908-07AA-11D2-8D6D-00C04F8EF8E0}

GlassBlock

{2A54C913-07AA-11D2-8D6D-00C04F8EF8E0}

Liquid

{AA0D4D0A-06A3-11D2-8F98-00C04FB92EB7}

Twister

{107045CF-06E0-11D2-8D6D-00C04F8EF8E0}

CenterCurls

{AA0D4D0C-06A3-11D2-8F98-00C04FB92EB7}

PageCurl

{AA0D4D08-06A3-11D2-8F98-00C04FB92EB7}

Water

{107045C5-06E0-11D2-8D6D-00C04F8EF8E0}

LightWipe

{107045C8-06E0-11D2-8D6D-00C04F8EF8E0}

RollDown

{9C61F46E-0530-11D2-8F98-00C04FB92EB7}

Wormhole

{0E6AE022-0C83-11D2-8CD4-00104BC75D9A}

Lens

{107045CA-06E0-11D2-8D6D-00C04F8EF8E0}

FadeWhite

{107045CC-06E0-11D2-8D6D-00C04F8EF8E0}

Jaws

{2A54C904-07AA-11D2-8D6D-00C04F8EF8E0}

FlowMotion

{2A54C90B-07AA-11D2-8D6D-00C04F8EF8E0}

Vacuum

{2A54C90D-07AA-11D2-8D6D-00C04F8EF8E0}

Grid

{2A54C911-07AA-11D2-8D6D-00C04F8EF8E0}

Threshold

{2A54C915-07AA-11D2-8D6D-00C04F8EF8E0}

Ripple

{AA0D4D03-06A3-11D2-8F98-00C04FB92EB7}

Curls

{AA0D4D0E-06A3-11D2-8F98-00C04FB92EB7}

PeelABCD

{AA0D4D10-06A3-11D2-8F98-00C04FB92EB7}

Curtains

{AA0D4D12-06A3-11D2-8F98-00C04FB92EB7}

BurnFilm

{107045D0-06E0-11D2-8D6D-00C04F8EF8E0}

Direct Animation 2DであるMetaCreationsフィルタ「DXTMETA..DLL」の場合はフィルタのタイプが22種類あります。その種類ごとに異なったCopyrightコードがあり、Copyrightプロパティで設定しておかないと社名ロゴが表示されます。

例えば上から三つ目のLiquid(液体)効果の場合はフィルタ名はprogid:DXImageTransform.MetaCreations.Liquidとなります。青い部分は共通です。これに対するCopyrightコードはCopyright MetaCreations Corp. 1998.  Unauthorized duplication of this string is illegal. {AA0D4D0A-06A3-11D2-8F98-00C04FB92EB7}となります。やはり緑の部分は共通です。

22種類ある内のひとつをランダムに選び、その効果でセットし、また対応するCopyrightプロパティへの値をセットします。例えば3ならばLiquidAA0D4D0A-06A3-11D2-8F98-00C04FB92EB7を拾い出してやればできますよね。

1ならColorFade、2ならGlassBlock、・・・、22ならBurnFilmという風に特定の値によって処理を変えるのは覚えていますか?

講座6にありましたswitch〜case・・・文ですね。breakを忘れないように。

変数koukaを用意し、koukaに1〜22までのランダムな数値を計算で代入します。そのkoukaの値に応じてフィルタ名とCopyright部分の非共通部分を選択するようにしましょう。

var kouka//効果の番号用
var fName//効果名用
var cName//Copyright用

function slide(){
kouka=Math.floor(Math.random()*22)+1//0〜21までの乱数に1を加算して1〜22までの乱数にする
switch(kouka){
   case 1:
       fName="ColorFade";cName="{2A54C908-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 2:
       fName="GlassBlock";cName="{2A54C913-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 3:
       fName="Liquid";cName="{AA0D4D0A-06A3-11D2-8F98-00C04FB92EB7}";break
   case 4:
       fName="Twister";cName="{107045CF-06E0-11D2-8D6D-00C04F8EF8E0}";break
   case 5:
       fName="CenterCurls";cName="{AA0D4D0C-06A3-11D2-8F98-00C04FB92EB7}";break
   case 6:
       fName="PageCurl";cName="{AA0D4D08-06A3-11D2-8F98-00C04FB92EB7}";break
   case 7:
       fName="Water";cName="{107045C5-06E0-11D2-8D6D-00C04F8EF8E0}";break
   case 8:
       fName="LightWipe";cName="{107045C8-06E0-11D2-8D6D-00C04F8EF8E0}";break
   case 9:
       fName="RollDown";cName="{9C61F46E-0530-11D2-8F98-00C04FB92EB7}";break
   case 10:
       fName="Wormhole";cName="{0E6AE022-0C83-11D2-8CD4-00104BC75D9A}";break
   case 11:
       fName="Lens";cName="{107045CA-06E0-11D2-8D6D-00C04F8EF8E0}";break
   case 12:
       fName="FadeWhite";cName="{107045CC-06E0-11D2-8D6D-00C04F8EF8E0}";break
   case 13:
       fName="Jaws";cName="{2A54C904-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 14:
       fName="FlowMotion";cName="{2A54C90B-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 15:
       fName="Vacuum";cName="{2A54C90D-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 16:
       fName="Grid";cName="{2A54C911-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 17:
       fName="Threshold";cName="{2A54C915-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 18:
       fName="Ripple";cName="{AA0D4D03-06A3-11D2-8F98-00C04FB92EB7}";break
   case 19:
       fName="Curls";cName="{AA0D4D0E-06A3-11D2-8F98-00C04FB92EB7}";break
   case 20:
       fName="PeelABCD";cName="{AA0D4D10-06A3-11D2-8F98-00C04FB92EB7}";break
   case 21:
       fName="Curtains";cName="{AA0D4D12-06A3-11D2-8F98-00C04FB92EB7}";break
   case 22:
       fName="BurnFilm";cName="{107045D0-06E0-11D2-8D6D-00C04F8EF8E0}";break
   
}
}

koukaは1〜22以外の値をとることはありませんので、上記の記述ではdefault部分は不要になります。

後は前回のRevealTransフィルタのようにフィルタをエレメントにセットして、apply()で凍結させ、画像ファイルをsrcプロパティで変更して、play()で再生する。この繰り返しになります。

フィルタはobject.style.filter="progid:DXImageTransform.MetaCreations."+fNameのようになりますね。
Copyrightプロパティはobject.filters["DXImageTransform.MetaCreations."+fName].Copyright="Copyright MetaCreations Corp. 1998.  Unauthorized duplication of this string is illegal. "+cNameとなります。progid:は不要なので注意!!まず""で囲まれた部分はスクリプトでは文字列だと思って間違いありません。もしその部分に変数を使用する場合は""で囲まないようにします。object.filters["DXImageTransform.MetaCreations."+fName]

とりあえず基本的なランダムスライドショー、まとめましょう。

[ソース]

<HTML>
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<META http-equiv="Content-Style-Type" content="text/css">
<title></title>
</head>
<body style="margin:0px; padding:0px;">
<img id="simg" onclick="slide()" src="ph1.jpg" style="position:absolute; left:20px; top:20px; border:gray 20px ridge; width:333px; height:500px">
<img id="simg" src="ph2.jpg" style="position:absolute; left:-1000px">
<img id="simg" src="ph3.jpg" style="position:absolute; left:-1000px">

<script>
var imgEls=document.all("simg")
var imgsrc=new Array()
for(n=0;n<imgEls.length;n++){
imgsrc[n]=imgEls[n].src
}

var imgno=0
var kouka//効果の番号用
var fName//効果名用
var cName//Copyright用

function slide(){
kouka=Math.floor(Math.random()*22)+1//0〜21までの乱数に1を加算して1〜22までの乱数にする
switch(kouka){
   case 1:
       fName="ColorFade";cName="{2A54C908-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 2:
       fName="GlassBlock";cName="{2A54C913-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 3:
       fName="Liquid";cName="{AA0D4D0A-06A3-11D2-8F98-00C04FB92EB7}";break
   case 4:
       fName="Twister";cName="{107045CF-06E0-11D2-8D6D-00C04F8EF8E0}";break
   case 5:
       fName="CenterCurls";cName="{AA0D4D0C-06A3-11D2-8F98-00C04FB92EB7}";break
   case 6:
       fName="PageCurl";cName="{AA0D4D08-06A3-11D2-8F98-00C04FB92EB7}";break
   case 7:
       fName="Water";cName="{107045C5-06E0-11D2-8D6D-00C04F8EF8E0}";break
   case 8:
       fName="LightWipe";cName="{107045C8-06E0-11D2-8D6D-00C04F8EF8E0}";break
   case 9:
       fName="RollDown";cName="{9C61F46E-0530-11D2-8F98-00C04FB92EB7}";break
   case 10:
       fName="Wormhole";cName="{0E6AE022-0C83-11D2-8CD4-00104BC75D9A}";break
   case 11:
       fName="Lens";cName="{107045CA-06E0-11D2-8D6D-00C04F8EF8E0}";break
   case 12:
       fName="FadeWhite";cName="{107045CC-06E0-11D2-8D6D-00C04F8EF8E0}";break
   case 13:
       fName="Jaws";cName="{2A54C904-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 14:
       fName="FlowMotion";cName="{2A54C90B-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 15:
       fName="Vacuum";cName="{2A54C90D-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 16:
       fName="Grid";cName="{2A54C911-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 17:
       fName="Threshold";cName="{2A54C915-07AA-11D2-8D6D-00C04F8EF8E0}";break
   case 18:
       fName="Ripple";cName="{AA0D4D03-06A3-11D2-8F98-00C04FB92EB7}";break
   case 19:
       fName="Curls";cName="{AA0D4D0E-06A3-11D2-8F98-00C04FB92EB7}";break
   case 20:
       fName="PeelABCD";cName="{AA0D4D10-06A3-11D2-8F98-00C04FB92EB7}";break
   case 21:
       fName="Curtains";cName="{AA0D4D12-06A3-11D2-8F98-00C04FB92EB7}";break
   case 22:
       fName="BurnFilm";cName="{107045D0-06E0-11D2-8D6D-00C04F8EF8E0}";break
   }
imgEls[0].style.filter="progid:DXImageTransform.MetaCreations."+fName
imgEls[0].filters["DXImageTransform.MetaCreations."+fName].Copyright="Copyright MetaCreations Corp. 1998.  Unauthorized duplication of this string is illegal. "+cName
imgEls[0].filters["DXImageTransform.MetaCreations."+fName].apply()
imgno=(imgno+1)%imgEls.length
imgEls[0].src=imgsrc[imgno]
imgEls[0].filters["DXImageTransform.MetaCreations."+fName].play()
setTimeout("slide()",5000)
}
setTimeout("slide()",5000)
</script>
</body>
</html>

 メタクリランダム基本形


基本形の画像表示部分の上に文字を表示させてみましょう。divエレメントをposition:absoluteで画像の上に重なるように配置します。文字にはグローフィルタをかけておきます(divエレメントにglowフィルタをかけておく)。文字色やフォントサイズなどを設定しておくのも面白いでしょう。ここでは文字色を白に、フォントサイズは12ptに、グローフィルタの色は赤で光彩の強さを5ピクセル(strength=5)としました。

glowフィルタ

オブジェクトの外側に沿って放射輝度を追加し、発光しているように見せる。

<hElement style="filter:glow(Color=color, Strength=strength)">
object.style.filter="glow(Color=color, Strength=strength)"

color シャドウ効果の特別な色。#RRGGBBの形式で指定する。あるいはweb safe カラー名。
strength 発光の強さ(輝度)。1から255までの値を指定する。

 

<div id="div1" style="position:absolute; left:15px; top:500px; color:white; font-size:12pt; filter:progid:DXImageTransform.Microsoft.Glow(Color=#ff0000,Strength=5); width:373px; height:40px; overflow:hidden; text-align:center"></div>

このdivエレメント(id=div1)に文字を表示させます。それにはdivエレメントの内部HTMLとして表示させたい文字を設定します。内部HTMLに設定するにはobject.innerHTMLプロパティを使用します。文字列にHTMLタグを含む場合は解釈されてHTML要素として表示されます。

表示させる文字列をフィルタ名にしてみましょう。

フィルタ名はimgEls[0].style.filterですね。

 メタクリランダム基本形、フィルタ名表示あり・・・ソースを参考にしてくださいね。


ここでswitch〜case・・・を使用しましたが、別の方法に気がつきませんか?ランダムに得られた値0〜21に、予め決められた文字列を選択してくるのですから、文字列を配列に入れておけばいいことに気がつくことでしょう。

例えばkoukaが0ならば"ColorFade"と"{2A54C908-07AA-11D2-8D6D-00C04F8EF8E0}"、1ならば"GlassBlock"と"{2A54C913-07AA-11D2-8D6D-00C04F8EF8E0}"という具合ですね。

ならばfNameとcNameを配列にしてfName[kouka]とcName[kouka]で文字列を求めればいいのではないでしょうか?文字列は配列要素として予めセットしておけばいいことでしょう。

配列に文字列を要素にするのはもう学習済みです。new Array()は必要としません。直接[と,と]で要素を代入します。

var fName=["文字列1","文字列2",・・・]のようにします。インデックス番号が0から始まるので、fName[0]が"文字列1"となることに注意します。

var fName=["ColorFade","GlassBlock","Liquid","Twister","CenterCurls","PageCurl","Water","LightWipe","RollDown","Wormhole","Lens","FadeWhite","Jaws","FlowMotion","Vacuum","Grid","Threshold","Ripple","Curls","PeelABCD","Curtains","BurnFilm"]//効果名用

var cName=["{2A54C908-07AA-11D2-8D6D-00C04F8EF8E0}","{2A54C913-07AA-11D2-8D6D-00C04F8EF8E0}","{AA0D4D0A-06A3-11D2-8F98-00C04FB92EB7}","{107045CF-06E0-11D2-8D6D-00C04F8EF8E0}","{AA0D4D0C-06A3-11D2-8F98-00C04FB92EB7}","{AA0D4D08-06A3-11D2-8F98-00C04FB92EB7}","{107045C5-06E0-11D2-8D6D-00C04F8EF8E0}","{107045C8-06E0-11D2-8D6D-00C04F8EF8E0}","{9C61F46E-0530-11D2-8F98-00C04FB92EB7}","{0E6AE022-0C83-11D2-8CD4-00104BC75D9A}","{107045CA-06E0-11D2-8D6D-00C04F8EF8E0}","{107045CC-06E0-11D2-8D6D-00C04F8EF8E0}","{2A54C904-07AA-11D2-8D6D-00C04F8EF8E0}","{2A54C90B-07AA-11D2-8D6D-00C04F8EF8E0}","{2A54C90D-07AA-11D2-8D6D-00C04F8EF8E0}","{2A54C911-07AA-11D2-8D6D-00C04F8EF8E0}","{2A54C915-07AA-11D2-8D6D-00C04F8EF8E0}","{AA0D4D03-06A3-11D2-8F98-00C04FB92EB7}","{AA0D4D0E-06A3-11D2-8F98-00C04FB92EB7}","{AA0D4D10-06A3-11D2-8F98-00C04FB92EB7}","{AA0D4D12-06A3-11D2-8F98-00C04FB92EB7}","{107045D0-06E0-11D2-8D6D-00C04F8EF8E0}"]//Copyright用

これで
kouka=Math.floor(Math.random()*22)//0〜21までの乱数にする
とすればfName[kouka]とsName[kouka]で文字列を得られますね。
先ほどは
kouka=Math.floor(Math.random()*22)+1//0〜21までの乱数に1を加算して1〜22までの乱数にする
でしたが、今回は+1加算がないことに注意してください。1〜22までの乱数ではなく、0〜21までの乱数にしなければなりません。

関数slide()は次のようになります。

function slide(){
kouka=Math.floor(Math.random()*22)//0〜21までの乱数にする
imgEls[0].style.filter="progid:DXImageTransform.MetaCreations."+fName[kouka]
div1.innerHTML=imgEls[0].style.filter//フィルタ名をdiv1エレメントに表示する
imgEls[0].filters["DXImageTransform.MetaCreations."+fName[kouka]].Copyright="Copyright MetaCreations Corp. 1998.  Unauthorized duplication of this string is illegal. "+cName[kouka]
imgEls[0].filters["DXImageTransform.MetaCreations."+fName[kouka]].apply()
imgno=(imgno+1)%imgEls.length
imgEls[0].src=imgsrc[imgno]
imgEls[0].filters["DXImageTransform.MetaCreations."+fName[kouka]].play()
setTimeout("slide()",5000)
}

メタクリランダム、配列仕様・・・先ほどよりもソースが小さくなることに注目ください。


写真の説明文をdiv1エレメントに表示させるには、説明文を配列要素に代入しておき、画像番号を示す変数によって配列のイデックス番号とするとできますね。

上の場合は画像は三つ使用しているので、説明文もみっつ用意します。

var setumei=["クリスマスツリー","鶴の夫婦","雪山"]

番号はimgnoに対応しているので・・・div1.innerHTML=setumei[imgno]となりますね。

サンプル、説明有


ボタンを配置し、ボタンで画像を変更させよう。次のようなボタンを用意してボタンを押すことで画像を変更するようにしてみましょう。但し前の写真がない場合は【前の写真へ】ボタンを非表示に、次の写真がない場合は【次の写真へ】ボタンを非表示にすることを考えます。

  

ボタンは<input>タグを使用します。rtype="button"にすればプッシュボタンになります。value="文字列"でボタン表面に表示するテキストを設定できます。尚idではなく、nameを使用するのが普通です。name=button1"など。

<input type="button" name="b1" value="前の写真へ">
<input type="button" name="b2" value="次の写真へ">

これを非表示にするにはvisibility="hhiden"にすればいいです。nameがオブジェクト識別子になります。

b1.style.visibility="hidden"

b1ボタンが非表示であるべきなのはどのようなときですか?

play()開始された時に表示されるべき画像番号imgnoが0のときですね。b2ボタンが非表示であるべきなのは?

表示されるべき画像番号imgnoがimgEls.length-1のときです。

ところで【次の写真へ】のときはimgno=(imgno+1)%imgEls.lengthでよいのですが、【前の写真へ】のときはこのままでは前になりませんね。この計算は今回やろうとしているスクリプトでは使いづらそうです。

ボタンをクリックすると次へあるいは前へとなるのですから、ボタンにonclick="スクリプト"で処理を考えてみましょう。

b1・・・onclick="imgno--;slide()"
b2・・・onclick="imgno++;slide()"

これでどうでしょう。a--はa=a-1なのはわかっていますね。a++はa=a+1と同じですよ。

プログラムで1差し引くことをデクリメント、1加えることをインクリメントといいます。

関数slide()では
@imgnoが0ならばb1を非表示に、そうでなければ表示に。
AimgnoがimgEls.length-1と等しい時には非表示に、そうでなければ表示に。
という処理が必要になるだろうことはわかりますね。

if(imgno==0){
b1.style.visibility="hidden"
}else{
b1.style.visibility="visible"
}
if(imgno==imgEls.length-1){
b2.style.visibility="hidden"
}else{
b2.style.visibility="visible"
}

クリックの時にplay()中である場合は何もしないようにしましょう。if(imgEls[0].filters[0].status==0){処理}
imgEls[0].filters[0]とすればimgEls[0].filters["DXImageTransform.MetaCreations."+fName[kouka]]とする必要がなくなりますね。imgElsにMetaCreationsフィル対外がかかっている場合(複数のフィルタがかかっている場合は注意しなければなりませんが)。

初期状態のためにb1ボタンはインラインスタイルシートでvisibility:hiddenにしておきます。またフィルタplay()のstatusプロパティを取得するためにステージとなるIMGエレメント(一番目の)にはとりあえずfilter:progid:DXImageTransform.MetaCreations.ColorFade()をセットしておきます。

[ソース]

<HTML>
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<META http-equiv="Content-Style-Type" content="text/css">
<title></title>
</head>
<body style="margin:0px; padding:0px;">
<img id="simg" onclick="slide()" src="ph1.jpg" style="position:absolute; left:20px; top:20px; border:gray 20px ridge; width:333px; height:500px; filter:progid:DXImageTransform.MetaCreations.ColorFade()">
<img id="simg" src="ph2.jpg" style="position:absolute; left:-1000px">
<img id="simg" src="ph3.jpg" style="position:absolute; left:-1000px">
<div id="div1" style="position:absolute; left:15px; top:500px; color:white; font-size:12pt; filter:progid:DXImageTransform.Microsoft.Glow(Color=#ff0000,Strength=5); width:373px; height:40px; overflow:hidden; text-align:center"></div>
<input type="button" name="b1" value="前の写真へ" onclick="if(imgEls[0].filters[0].status==0){imgno--;slide()}" style="position:absolute; left:100px; top:570px; visibility:hidden">
<input type="button" name="b2" value="次の写真へ" onclick="if(imgEls[0].filters[0].status==0){imgno++;slide()}" style="position:absolute; left:220px; top:570px">
<script>
var imgEls=document.all("simg")
var imgsrc=new Array()
for(n=0;n<imgEls.length;n++){
imgsrc[n]=imgEls[n].src
}

var imgno=0
var kouka//効果の番号用
var fName=["ColorFade","GlassBlock","Liquid","Twister","CenterCurls","PageCurl","Water","LightWipe","RollDown","Wormhole","Lens","FadeWhite","Jaws","FlowMotion","Vacuum","Grid","Threshold","Ripple","Curls","PeelABCD","Curtains","BurnFilm"]
//効果名用
var cName=["{2A54C908-07AA-11D2-8D6D-00C04F8EF8E0}","{2A54C913-07AA-11D2-8D6D-00C04F8EF8E0}","{AA0D4D0A-06A3-11D2-8F98-00C04FB92EB7}","{107045CF-06E0-11D2-8D6D-00C04F8EF8E0}","{AA0D4D0C-06A3-11D2-8F98-00C04FB92EB7}","{AA0D4D08-06A3-11D2-8F98-00C04FB92EB7}","{107045C5-06E0-11D2-8D6D-00C04F8EF8E0}","{107045C8-06E0-11D2-8D6D-00C04F8EF8E0}","{9C61F46E-0530-11D2-8F98-00C04FB92EB7}","{0E6AE022-0C83-11D2-8CD4-00104BC75D9A}","{107045CA-06E0-11D2-8D6D-00C04F8EF8E0}","{107045CC-06E0-11D2-8D6D-00C04F8EF8E0}","{2A54C904-07AA-11D2-8D6D-00C04F8EF8E0}","{2A54C90B-07AA-11D2-8D6D-00C04F8EF8E0}","{2A54C90D-07AA-11D2-8D6D-00C04F8EF8E0}","{2A54C911-07AA-11D2-8D6D-00C04F8EF8E0}","{2A54C915-07AA-11D2-8D6D-00C04F8EF8E0}","{AA0D4D03-06A3-11D2-8F98-00C04FB92EB7}","{AA0D4D0E-06A3-11D2-8F98-00C04FB92EB7}","{AA0D4D10-06A3-11D2-8F98-00C04FB92EB7}","{AA0D4D12-06A3-11D2-8F98-00C04FB92EB7}","{107045D0-06E0-11D2-8D6D-00C04F8EF8E0}"]//Copyright用
var setumei=["クリスマスツリー","鶴の夫婦","雪山","海に沈む夕日"]//説明文
function slide(){
if(imgno==0){
b1.style.visibility="hidden"
}else{
b1.style.visibility="visible"
}
if(imgno==imgEls.length-1){
b2.style.visibility="hidden"
}else{
b2.style.visibility="visible"
}

kouka=Math.floor(Math.random()*22)//0〜21までの乱数にする
imgEls[0].style.filter="progid:DXImageTransform.MetaCreations."+fName[kouka]
imgEls[0].filters["DXImageTransform.MetaCreations."+fName[kouka]].Copyright="Copyright MetaCreations Corp. 1998.  Unauthorized duplication of this string is illegal. "+cName[kouka]
imgEls[0].filters["DXImageTransform.MetaCreations."+fName[kouka]].apply()
imgEls[0].src=imgsrc[imgno]
div1.innerHTML=setumei[imgno]
imgEls[0].filters["DXImageTransform.MetaCreations."+fName[kouka]].play()
}
</script>
</body>
</html>

メタクリスライドショー、ボタン・説明文付き


ところで異種トランジションフィルタをダブルでかけることはできるのでしょうか?

こういうことは試してみるのが一番!!

RevealTransフィルタとMetaCreationsフィルタを同時にセットしてほぼ同時に実行させてみました。

サンプルをご覧になってください。ちゃ〜んと二つの効果が重なってトランジションします。

RevealTransとMetaCreations同時Play()

 

次回予定は二次元配列を紹介します。JavaScriptでは一般のプログラム言語のように多次元配列というものが元々備わっていませんが、配列オブジェクトを配列オブジェクトの要素にする(配列の配列)という方法で多次元配列のように使用できます。余りややこしくならないように二次元配列だけ紹介する予定です。

var hairetu=new Array()
for(i=0;i<3;i++){
hairetu[i]=new Array()
}

のような感じです。これですとhairetu[0]、hairetu[1]、hairetu[2]がそれぞれ配列オブジェクトになりますので、hairetu[0][0]、hairetu[0][1]、hairetu[1][1]、hairetu[2][1]・・・のように二次元配列同様に扱えます。


[ひな形スクリプト講座1][ひな形スクリプト講座2][ひな形スクリプト講座3][ひな形スクリプト講座4][ひな形スクリプト講座5][ひな形スクリプト講座6][ひな形スクリプト講座7][ひな形スクリプト講座8][ひな形スクリプト講座9][ひな形スクリプト講座10][ひな形スクリプト講座11][ひな形スクリプト講座12][ひな形スクリプト講座13][ひな形スクリプト講座14][ひな形スクリプト講座15][ひな形スクリプト講座16][ひな形スクリプト講座17][ひな形スクリプト講座18][ひな形スクリプト講座19][ひな形スクリプト講座20][ひな形スクリプト講座21][ひな形スクリプト講座22][ひな形スクリプト講座23][ひな形スクリプト講座24][ひな形スクリプト講座25][ひな形スクリプト講座26][ひな形スクリプト講座27][ひな形スクリプト講座28][ひな形スクリプト講座29][ひな形スクリプト講座30][参考資料索引]