NEWS

2016.09.02 「Photoshopとpapervision3dでテクスチャ付3Dを作成する(4)」を更新しました。

  • Web creators

ActionScript

オリジナルのタイマーを設定

概要

Flashで複数の写真を一定時間で切り替えたい場合は、ActionScriptでタイマー処理を施すことで実現できます。
ActionScriptには一定時間ごとに処理を行う"setInterval()"という関数が用意されていますが、ここではさまざまな用途で利用できるようにオリジナルのタイマーを設定する方法をご紹介します。

サンプル解説

10秒(10,000ミリ秒)ごとにシンボルに設定してる背景色が切り替わります。

作成法

(1) シンボルの作成
  ・一定時間ごとに背景が切り替わるシンボル「シンボル」を用意します。
シンボルの作成
  ・ActionScriptを設置するレイヤー「action」を設定します。
  ・数値を記載するレイヤー「数値」を設定します。
  ・背景を設置するレイヤー「レイヤー3」を設定します。
  ・「action」と「数値」レイヤーを2フレーム目まで挿入します。
  ・「レイヤー3」の1フレーム目には右側の四角に背景色を付けます。
シンボルの編集
  ・「レイヤー3」の2フレーム目にキーフレームを挿入し、左側の四角に背景色を付けます。
シンボルの編集
  ・「action」にActionScriptを設定します。
 
01
this.stop();
 
(2) シンボルをステージに配置
  ・ActionScriptを設置するレイヤー「Action」を作成します。
  ・各シンボルを設置するレイヤー「シンボル」を作成します。
  ・作成したシンボルをステージに設置します。
ステージに配置
  ・総再生時間を表示する枠と、オリジナルタイマーを表示する枠をダイナミックテキストで設置します。
ダイナミックテキストの配置
  ・上側のダイナミックテキストの変数に「toTime」を設定します。
  ・下側のダイナミックテキストの変数に「count」を設定します。
変数の設定
 
(3) ActionScriptの設定
  ・「Action」レイヤーのタイムラインにActionScriptを設定します。
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
_root.timer = 0;
_root.msChange = 1;
 
onEnterFrame = function() {
 _root.toTime = getTimer();
 _root.count = _root.toTime - _root.timer;
 
 if(_root.count > 10000){
  _root.changeMc();
  _root.timer = _root.toTime;
 }
}
 
function changeMc() {
 if(_root.msChange == 1){
  _root.mcSample.gotoAndStop(2);
  _root.msChange = 2;
 }else{
  _root.mcSample.gotoAndStop(1);
  _root.msChange = 1;
 }
}

解説

オリジナルのタイマーは、Flashが表示されてからの時間がカウントされる"getTimer"を利用して、一定時間ごとに"getTimer"の数値を保存し、それらの差分で処理するようにしています。
ActionScriptの5行目で"getTimer"を使った表示からの再生時間を取得しています。
この値はステージ上に設置した「総再生時間」で見ることができます。
6行目ではその「総再生時間」から任意で設定した時間を引くように計算しています。
8行目の分岐条件で10秒(10,000ミリ秒)ごとに処理が行われます。
再生開始時は1行目の0を利用し、10秒たてば10行目の処理で「_root.timer」に秒数を保持しています。
14行目からの処理はシンボルの背景を切り替える処理で、2行目の「_root.msChange」が1なら右側に背景色が、2なら左側に背景色がつくようになります。

特定のシーンが表示されてからカウントするや、ボタンを押されてからカウントするといった"setInterval()"関数よりも柔軟な対応ができます。

ページ上部へ