HOME TOP BACK NEXT

1.HTML+TIMEの基本
HTML+TIMEは、Microsoftが提唱しているHTMLの拡張機能で、 InternetExplorer 5以上の環境で動作します。 HTMLにTIME(時間的な機能)を加えたことにより、 指定した時間に画像やメッセージ表示させたり、動かしたり、変化をつけたりできます。 HTML+TIMEに関するMicrosoftの公式解説ページ(英語)はこちらです。 詳細で正確な情報を知りたい方は公式ページをご利用ください。 以前は、「HTML+TIMEひな形講座」というWEBサイトが、 HTML+TIMEの記述法とひな形用のサンプルソースを提供してくれていました。しかし、残念なことに、1年ぐらい前にWEBから消えてしまいました。

このひな形の作り方講座では、HTML+TIMEの基本的なところを紹介し、 HTML+TIMEのプログラムの記述を練習することにします。
HTML+TIMEはHTML文が基本なので、JavaScriptに比べてプログラムが容易で、 基本的な記述法をマスターすれば、だれでもプログラムできます。 まず、大前提となるのは、基本的なHTML文の知識があるということです。 また、HTML+TIMEで使うHTMLは、主にスタイルシート(CSS)の記述ですから、スタイルシートの知識も、ある程度、必要になってきます。
スタイルシートの基本を少しおさらいしておきましょう。
スタイルシートの記述法には、<head>内に書く方法と、 <body>内の要素1つ1つに個別に書く方法の2パターンがあります。

<head>内に書く方法は、「背景に画像を使う」のページで練習した 「背景画像を横一列に並べて使う方法」のような書き方です。
主に、body全体にかかるような属性を指定するとき使います。
<style type="text/css">
<!--
body {
background-repeat:repeat-x;
}
-->
</style>


<body>内に書く方法は、「画像と文字を配置する」のページで練習した 「画像の配置」のような書き方です。
img(画像)に直接、 style=という形で属性を指定したり、 <div>と</div>の間の領域に指定したりします。
<img src="kinokosgy.gif" style="top:250;left:300;position:absolute;width:77;height:76;">
<div style="top:250;left:300;position:absolute;width:77;height:76;">
<img src="kinokosgy.gif" width="77" height="76"></div>


スタイルシートを思い出したところで、次は、HTML+TIMEの基本ソースです。
赤い部分はHTML+TIMEを使うための必須条件ですから、必ず書いてください。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns:t="urn:schemas-microsoft-com:time">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<style type="text/css">
<!--
.time{ behavior:url(#default#time2); }
t\:* { behavior: url(#default#time2) }
-->
</style>

</head>
<body id="body1">

<!-- HTML+TIMEのソースはここに書きます -->

</body>
</html>

この基本ソースをHTMLファイルにしたのがこちら。 これからは、このファイルに様々なソースを書いて練習しましょう。

2.TIME表現の基本文法
HTML+TIMEで、何かを表現するときの基本の文法を覚えましょう。 TIMEで何かを表現する記述法には、インライン要素として記述するやり方と、 ターゲットエレメントで記述するやり方があります。

[1]インライン要素として記述する
最もシンプルな記述法は、TIMEをインライン要素(ある物の中に含まれる属性)として使う書き方です。
例を示すと、次のような書き方です。
@<img class="time" src="c1.gif" style="z-index:1; position: absolute; top:100;left:100;" begin="0" />
HTML+TIMEで何かを表すとき、表示するもの本体には、必ず class="time"と書いておきます。つまり、「これをtimeを使って表示します」と宣言しているわけです。 このclass="time"は、<head>内に書いた、HTML+TIMEを使うためのスタイルシートを呼び出し、 imgがtimeによって動くことを許可されるという構造になっています。
imgの位置は個別のスタイルシート style="z-index:1; position: absolute; top:100;left:100;" で指定します。上から100ピクセル、左から100ピクセルが、この画像の最初の位置です。 実は、この例では、timeaction="visibility"「時間によって表示する」というタグが省略されているのですが、書かなくても結果は同じなので省略しています。
begin=" "は、始まりの時間です。この場合は、0ということで、このHTMLドキュメントが始まるときに同時に始まることになります。 0の場合は、begin="0"を書かなくても最初から表示されます。
A<img class="time" src="c2.gif" style="z-index:2; position: absolute; top:200;left:200;" begin="2" />
begin="2"なので、2秒後に表示されます。
B<img class="time" src="c3.gif" style="z-index:3; position: absolute; top:300;left:300;" begin="3" end="4" />
end=" "は終わりの時間です。end="4"なので、4秒後に表示が終わる、つまり、消えます。
@は初めから表示され終わりがない、Aは2秒後に現われ終わりがない、Bは3秒後に現われ4秒後に終わる。
これらをまとめて表示した結果がこちらです。

[2]ターゲットエレメントで記述する
ひな形を作るときに、一般的に使われている記述法は、TIMEで表示する実体と、それを動かす命令文、に分けて書く記述法です。

画像を動かす
cp1.gifという画像を動かす例で説明します。
<img class="time" id="img1" src="cp1.gif" style="z-index:1; position: absolute; top:100;left:100;" />
<t:animateMotion id="idou1" targetElement="img1" from="0,0" to="400,100" begin="0" dur="3" fill="hold" />

この2行が1セットとなっています。表示例はこちら

<img class="time" id="img1" src="cp1.gif" style="z-index:1; position: absolute; top:100;left:100;" />
が表示する実体です。
<t:animateMotion id="idou1" targetElement="img1" from="0,0" to="400,100" begin="0" dur="3" fill="hold" />
が、ターゲット(対象とする実体)を決めて「このように表現しなさい」と指示する命令文です。

ターゲットエレメント(targetElement)で記述する場合、どの実体に対してどの命令文が指示するのかを明確にするため、全ての物や動きにidをつけておきます。 idはどんな名前にしても構いませんが、同じidを使ってはいけません。 この場合、表示する実体は、cp1.gifという画像ですが、idはimg1と名づけてあります。 命令文のほうは、idou1というidをつけてあります。

表示する実体には、必ず class="time"と書いておきます。つまり、「これをtimeを使って表示します」と宣言しておきます。

命令文のほうは、どんな表現をするのかを指定するt:○○○○から始まります。 この場合は、t:animateMotionということで、画面の上を上下左右に位置移動する命令になっています。
何を動かすかは、targetElement="id名" で指定します。この場合は、targetElement="img1"ですから、img1というidをつけられたものを 動かすことになります。
どこへ動かすかを指定するのが、 from="0,0" to="400,100" です。初めの位置を0,0として、 x方向に400(右に400ピクセル)、y方向に100(下に100ピクセル)動くことを指示しています。
begin="0" は、動き始めの時間。0だと、このプログラムが始まると同時に動き始めます。 dur="3"は、どのくらいの時間をかけて動くのか。この場合は、3秒で動くという意味です。 最後の、 fill="hold"は、終わりの状態を固定するという意味。つまり、「元の位置から指定の位置まで3秒かけて動いたら、そこで留まる」 ということを意味しています。

命令文の方を書き直して、いろいろな動きを試してみましょう。
@<t:animateMotion id="idou1" targetElement="img1" from="0,0" to="400,100" begin="0" dur="3" fill="hold" />
が、元の命令文。動き終わった位置で留まります。
A<t:animateMotion id="idou1" targetElement="img1" from="0,0" to="400,100" begin="0" dur="3" repeatcount="2" />
と記述すると、終わった瞬間、元の場所からスタートして同じ動きを2回繰り返します。
B<t:animateMotion id="idou1" targetElement="img1" from="0,0" to="400,100" begin="0" dur="3" autoreverse="true" repeatcount="2" />
と記述すると、オートリバースですから、終わりの位置から逆方向に動いて元に戻るところまでを1回の動きとして、repeatcountで指定した回数動きます。
C<t:animateMotion id="idou1" targetElement="img1" from="0,0" to="400,100" begin="0" dur="3" autoreverse="true" repeatcount="indefinite" />
と記述すると、同じ動きを永遠に繰り返します。Cの表示例はこちら
それでは、動き終わったら、その実体を消したい場合はどうするか?その場合は、表示する実体にend=" "をつけて、終わりの時間を指定します。
D<img class="time" id="img1" src="cp1.gif" style="z-index:1; position: absolute; top:100;left:100;" end="idou1.end" />
<t:animateMotion id="idou1" targetElement="img1" from="0,0" to="400,100" begin="0" dur="3" />
Dの表示例はこちら

文字を動かす
img(画像)以外のものをTIMEで表現する場合の練習をしましょう。 img以外のものは、 spanでくくられた領域、 divでくくられた領域、 tableなど、もっと大きなところではbackground(背景)を、TIMEで表現することができます。
文字に表現を加える場合は、「文字を入れ込んだ領域全体」を表示する実体に決めて、targetElementで、表現を指示します。 文字数が少なく改行がない場合は、<span></span>を使って、<span>の間の領域ごと文字を動かします。
<span class="time" id="font1" style="z-index:1; position: absolute; top:100;left:100;"> <font color="#0000ff" size="5">こんにちは♪</font> </span>
<t:animateMotion id="idou1" targetElement="img1" from="0,0" to="400,200" begin="0" dur="3" fill="hold" />

このソースの表示例はこちら

連続した動きを表現する
先ほどの画像の移動と文字の移動を続けて表示して、連続的な動きを記述する練習をしてみましょう。
<img class="time" id="img1" src="c1.gif" style="z-index:1; position: absolute; top:100;left:100;" />
<t:animateMotion id="idou1" targetElement="img1" from="0,0" to="400,100" begin="0" dur="3" fill="hold" />
<span class="time" id="font1" style="z-index:2; position: absolute; top:100;left:500;"><font color="#0000ff" size="5">こんにちは♪</font></span>
<t:animateMotion id="idou2" targetElement="font1" from="0,0" to="-400,200" begin="idou1.begin+1" dur="3" fill="hold" />

表示例はこちら

初めに動く画像のソースは同じですが、2番目に動く文字は、ソースを変えてあります。
動きを指定する命令文のidが、1番目の動きと同じidにならないように、idou2というidをつけました。
最初の位置と動く方向も、今度は、 top:100;left:500;が最初の位置で、そこからto="-400,200"、左に400、下に200動きます。
さらに、始まりの時間、beginが、begin="idou1.begin+1"になっています。これは、ido1の始まり+1分という意味です。 単にbegin="1"と書いてもいいのですが、2番目の動きからは、前の動きのidを基準にして、 idou1.begin+1(ido1の始まり+1分)、 idou1.end(ido1の終わり)、 idou1.end+2(ido1の終わり+2分)といった他のidの動きを基準にした記述の仕方で、始まりのときを指定することができます。
そして、文字のz-indexは2にしてあります。こうしておくと、最初に動く画像と、2番目に動く文字が、動きの途中で重なったとき、文字のほうが上に乗ります。

Copyright(C) 2001〜PurpleEyes All Rights Reserved.