このFlash講座1234は,flashソフトを用いてflashアニメなどの制作をスクリプトを通して無料で公開したものです。
FLASH講座 ーアクションスクリプトの実践的事始めー
活用編
(12) 画像枚数読取り型スライドショー太陽
 今回のスライドショーは、自動再生と次へ・戻るのボタンイベント再生を組み合わせたベーシックなものです。しかし、再生する画像を画像フォルダに連番で入れておけば、その枚数をカウントして再生するタイプです。

 したがって、サーバーにアップロードした後でも、swfファイルの更新をすることなく、枚数にとらわれず入れ替えたり、増減させたりすることが可能になるのです。
 また、画像表示のタイミングで、ランダム八方向から画像がスライドして登場するするような趣向を施しています。
SAMPLE
ステージの準備
●w520、h400、24fpsのステージを設定し、背景色を黒とする。
●画面左下部にスライド番号(current_num)、総スライド数(total_num)を表示するダイナミックテキストボックスを設置する(カッコ内はインスタンス名)
●画面中央下部に戻るボタン(back_btn)、次へボタン(forward_btn)を左右に、中央に、自動再生用のplayボタンとstopボタンを重ね合わせて配置する(stopが上)
●画面右下部にコンポーネントのComboBoxからドラッグ&ドロップで配置し、プロパティーでmyComboと名づけ、サイズを40*22とする。 さらにパラメーターでラベルに4,2,3,5,6,7と記入する(自動再生間隔秒の設定用、初期値4)
●画面に表示画面の大きさの矩形を描き(黒色、ここでは450*320)、シンボルに変換(mask)、画面から削除する
●本swf ファイルと同じフォルダにimgという名のフォルダを作成、画像を格納する(ここではpic1,,,,pic12の連番)
本稿で使用させていただいた写真は、荒木さんのサイトで公開されている写真の一部です。 とにかく素晴らしいです。 是非のぞいてみてください。 アドレスは、http://www15.ocn.ne.jp/~araki-lf/
●画面レイアウト

写真(外部ファイル)、マスク(ライブラリ)はスクリプトで配置する。
マスクの領域だけの写真部分が表示される
写真がロードされて表示される時点で、写真は、乱数発生される
1から8までの数字に応じて(八方向のいずれかに向かって)、
15px移動する
スクリプト
var n = 0;
var s = 0;
_forcusrect = false;
attachMovie("mask", "mask_mc", 0);
mask_mc._x = mask_mc._y=28;
load_mc = createEmptyMovieClip("load_mc", -1);
var mcLoader:MovieClipLoader = new MovieClipLoader();
var oListener = new Object();

function searchTotal() {
  s++;
  $jpg = "img/pic"+s+".jpg";
  mcLoader.loadClip($jpg, load_mc);
  load_mc._alpha = 0;
  oListener.onLoadError = function() {
    total = s;
    clearInterval(sID);
    n = 0;
    autoExchange();
  };
  mcLoader.addListener(oListener);
}
function p_load(n) {
  $jpg = "img/pic"+n+".jpg";
  mcLoader.loadClip($jpg, load_mc);
  p_direction(n);
  load_mc._x = 10;
  load_mc._y = 10;
  load_mc._alpha = 0;
  _root.onEnterFrame = function() {
    load_mc.setMask(mask_mc);
    load_mc._alpha += (100-load_mc._alpha)/40;
    load_mc._x += (targetx-load_mc._x)/40;
    load_mc._y += (targety-load_mc._y)/40;
    current_num.text = n;
    total_num.text = total-1;
  }
}
function autoExchange() {
  if (n>=total-1) {
    n = 1;
    p_load(n);
  } else {
    n++;
    p_load(n);
  }
}
function p_direction(n) {
  dir = Math.floor(Math.random()*8)+1;
  x0 = y0=10;
  xm = ym=25;
  switch (dir) {
  case 1 :
    targetx = xm;
    targety = ym;
    break;
  case 2 :
    targetx = xm;
    targety = y0;
    break;
  case 3 :
    targetx = xm;
    targety = 2*y0-ym;
    break;
  case 4 :
    targetx = x0;
    targety = 2*y0-ym;
    break;
  case 5 :
    targetx = 2*x0-xm;
    targety = 2*y0-ym;
    break;
  case 6 :
    targetx = 2*x0-xm;
    targety = y0;
    break;
  case 7 :
    targetx = 2*x0-xm;
    targety = ym;
    break;
  case 8 :
    targetx = x0;
    targety = ym;
  }
}
play_btn.onRelease = function() {
  flag=0;
  forcusManager.setFocus(play_btn);
  clearInterval(pID);
  autoExchange();
  pID = setInterval(autoExchange, myCombo.value*1000);
  mx.behaviors.DepthControl.sendBackward(this);
};
stop_btn.onRelease = function() {
  flag=1;
  forcusManager.setFocus(stop_btn);
  clearInterval(pID);
  mx.behaviors.DepthControl.sendBackward(this);
};
f_btn.onRelease = function() {
  forcusManager.setFocus(f_btn);
  autoExchange();
};
b_btn.onRelease = function() {
  forcusManager.setFocus(b_btn);
  if (n<2) {
    n = total-1;
  } else {
    n--;
  }
  p_load(n);
};

sID = setInterval(searchTotal, 70);
pID = setInterval(autoExchange, 4000);
myComboBoxListener = new Object();
myComboBoxListener.change = function() {
  clearInterval(pID);
  if (flag!==1) {
   pID = setInterval(autoExchange, myCombo.value*1000);
  }
};
myCombo.addEventListener("change", myComboBoxListener);
変数nの初期値
変数sの初期値
フォーカスが当たったときの四角非表示
マスクをステージに配置
マスクの配置座標
画像を読み込むムービークリップの作成
MovieClipLoaderの作成
リスナー(監視オブジェクト)の作成

フォルダ(img)内の画像枚数を調べる関数
関数が呼び出される度にsに1を足す
画像のファイル名
load_mcに画像をロードする
アルファ値を0に
ロードエラーが生じたら(画像がない)
そのときのsをtotalとする(実枚数は-1)
Intervalの解除

autoExchange関数を実施

リスナーの設定



画像をロードする関数
画像ファイル名
load_mcに画像をロードする
移動先の座標を取得
画像初期x座標
画像初期y座標
初期アルファを0に
フレームアクション
load_mcにマスクをかける
アルファ値を100に
load_mc(画像表示mc)をtargetxに
targetyに
現在のn(画像番号)を表示
トータル枚数を表示


自動再生画像切り替え指示関数
存在枚数を超えたら
nを1に
ロード開始
存在枚数内だったら
nに1を足す
ロード開始



画像移動先座標を決める関数
1から8までの乱数発生


dirに応じて移動先を決める
(targetx、targety)


































playボタンが押されたら
flag を0に
playボタンにフォーカスを当てる 注)
pIDをクリヤー
関数 autoExchange へ
コンボボックス指定値ごとにautoExchange を実施
ボタンを背後に

stopボタンが押されたら
flagを1に
stopボタンにフォーカスを当てる 注)
pID を解除
ボタンを背後に

forwardbボタンが押されたら
forwardボタンにフォーカスを当てる 注)
autoExchange を実施

backボタンが押されたら
backボタンにフォーカスを当てる 注)
nが2より小さくなったら
n をtotal-1に(totalは存在枚数より1多い)
そうでなかったら
nから1を引く

p_loadを実施



searchTotal を70ミリ秒ごとに実施
autoExchange を4秒ごとに実施
リスナーオブジェクトの作成
データが変わったときに実施
pIDのクリヤー
もし flag が1でなければ(stopボタンが押されてなかったら)
comboボックスの数値(間隔)でautoExchangeを実施

リスナーの設定
注)ComboBoxを使った後、ボタン類の連続クリックが効かなくなるのを回避するため
  詳しくは、こちらを参照のこと
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 このサイトで使用しましたflashソフトはflash mx 2004年版(Flash Japan)- flash8 及び FlashCS3-2007年版です。
 flash講座(フラッシュ講座)は、Yoshioka氏(通称、ひげ親父)による制作です。 コツコツと作られたflash素材(flashアニメ、スクリプト)はユーザーの方により保存変更され動画flash(動画フラッシュ)や携帯flash(待受flash)として利用されて来ました。
 氏は、flashスクリプトについての学習を、パソコン塾講師活躍中に始められ、独立した今も続けておられます。 
  macromedia flashソフトは新しくadobe flash時代に入りましたので、これを機会にflash学習サイトを「flash講座1234」としてリニューアルいたしました。 引き続きご愛顧承りますよう、よろしくお願いいたします。                                                                           (by Hiraoka)
HOME   Flash講座総リスト    アクションスクリプトの実践的事始め-活用編(13)