Java Appletの解説
<5.文字の表示(その2)>
前のページのプログラムのpublic void run(){ } この部分を変えるだけで色々なバリエーションができます。
実際の例の表示は,簡単な例なので省略します。「1.文字の大きさを変える」「2.文字の色を変える」と似たような例は
「文字表示の例」「1.パターン」にあります。例よりもう少し複雑にしてます。
なお,ページの戻るを使うと「文字表示の例」に戻りますので,プラウザの戻るを使って下さい。
1.文字の大きさを変える
要点だけを解説します。
1.<Javaファイル>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
public void run(){
int siz;
while (true){
for (siz=1;siz<=28;siz=siz+2){
g.setFont(new Font("TimesRoman",Font.BOLD,siz));
g.setColor(new Color(255,255,0));
g.drawString(msg,100-siz*3,28);
try{th.sleep(200);}
catch (InterruptedException e){}
g.clearRect(0,0,300,60);
}}}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
2.<解説>
1.g.setFont(new Font("TimesRoman",Font.BOLD,siz));
sizは,文字の大きさを意味します。これを変化させる事により,文字が次第に大きくなります。
2.for (siz=1;siz<=28;siz=siz+2){
for文です。初期値1,増加分2,最終値28です。
3.g.drawString(msg,100-siz*3,28);
(100-siz*3)と文字の表示する場所(x軸の値)を変えます。別にこれがなくてもいいのですが,このようにすれば,字が大きくなるにつれて左右にひろがります。
ただの数字を入れれば,文字の始まる場所が同じで右側方向に広がっていきます。
4.for (siz=1;siz<=28;siz=siz+2){ } for (siz=28;siz>=1;siz=siz-2){ }
とすれば,大きくなって再び小さくなる事を繰り返すことになります。
2.文字の色を変える
要点だけを解説します。
1.<Javaファイル>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
public void run(){
int blu;
while (true){
for (blu=0;blu<=255;blu=blu+5){
g.setFont(new Font("TimesRoman",Font.BOLD,28));
g.setColor(new Color(0,0,blu));
g.drawString(msg,10,28);
try{th.sleep(100);}
catch (InterruptedException e){}
g.clearRect(0,0,300,60);
}}}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
2.<解説>
1.g.setColor(new Color(0,0,blu));
new Color(red,0,0)でもnew Color(0,gre,0)でもかまいません。最初の数字は赤,次は緑,最後が青です。例は青色の部分だけを変化させてます。new Color(c,c,c)としてもいいかもしれません。
数字は0から255までです数字が大きいほど濃い色になります。色々な組み合わせがあると思います。
初めの色の設定を背景と同じにすると,少しづつ浮きででくる文字をつくれます。
2.for (blu=0;blu<=255;blu=blu+5){
blu=blu+5 5づつ増加しますが,大きな数字では変化するスピードがはやくなります。
for分を色々と組み合わせても,面白いと思います。例はだんだん色が濃くなりますがfor (blu=255;blu>=0;blu=blu-5)とすれば,だんだん薄くなります。
3.一文字づつ上下に動く
これとにたものは,「文字表示の例」「2.パターン」にあります。
なお,ページの戻るを使うと「文字表示の例」に戻りますので,プラウザの戻るを使って下さい。
g.drawString(msg,x,y);このx,yを色々な関数で動かすと文字が色々な動きをします。
1.<Javaファイル>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
public void run(){
int h,i,n,t;
String one;
while (true){g.setFont(new Font("Courier",Font.BOLD,48));
n=msg.length();
for (t=-360;t<360;t=t+10){
for(i=0;i<n−1;i++){
h=(int)(Math.sin(((i+1)*360/n+t)*3.14159/180)*20);
one=msg.substring(i+1,i+2);
g.setColor(new Color(255,255,255));
g.drawString(one,i*48,60+h);
}
try{th.sleep(20);}
catch (InterruptedException e){}
g.clearRect(0,0,400,100);
}}}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
2.<解説>
いままでの文字の表示はmsgの変数にワンセットに代入されていて,色を変えたして表示する方法でした。
今度は,1文字づつ変化させる方法です。なお,これは(400,100)の大きさになってますのでHTML文もその大きさにしないといけません。
1.n=msg.length();
msgに含まれる文字列の大きさをnに代入します。
2.one=msg.substring(i+1,i+2);
msg.substring(n1,n2)はmsgの文字列のn1番目の文字からn2番目の文字未満の文字です。
例は,1文字づつとり出すことになります。
for(i=0;i<n−1;i++){
g.drawString(one,i*48,60+h);
一文字づつ表示します。
3.for (t=-360;t<360;t=t+10){
h=(int)(Math.sin(((i+1)*360/n+t)*3.14159/180)*20);
Math.sin(x*3.14159/180) xは角度(度) x*3.14159/180はラジアン値 サインカーブの値が得られます。
(i+1)*360/nは,360度を文字の数で分割してそれぞれの文字を初期の配置してます。これがないと波打ってるように見えません。
横一線に上下するだけです。隣との文字を少しづつずらすため波打ってるように見えます。
そしてtを変化させることで上下します。
最後の20は上下する幅です。大きく上下させたければ大きな数字にして下さい。
(int)は,変数のタイプを一致させるものです。Math.sinでは実数値なりますので,これを付けて整数値にします。
4.g.drawString(one,i*48,60+h);
文字の大きさは48ですのでi*48で文字を1字づつ並べます。hは上下する数字です。
これを色々組み合わせることで色々な動きや変化ができます。
<その1>
h=(int)(Math.sin(((i+1)*360/n-t)*3.14159/180)*100);
w=(int)(Math.cos(((i+1)*360/n-t)*3.14159/180)*100);
one=msg.substring(i+1,i+2);
g.setColor(new Color(255,255,255));
g.drawString(one,w+i*1+150,200+h);
これは,円を描く場合です。なお,これは(400,300)の大きさで表示してます。
<その2>
さらに,渦のような変な動きするのは,下の部分だけ変わります。
g.drawString(one,w+i*20+150,200+h);
これらの例は,「文字表示の例」「4.パターン」にあります。
なお,ページの戻るを使うと「文字表示の例」に戻りますので,プラウザの戻るを使って下さい。
<その3>
表示する場所でなく,例2のように色の部分を変えれば一字づつ色が変わることになります。これは作ってませんが,同じ様な原理です。
娯楽室の各部屋