ActionScript3.0で作る写真ギャラリー
ActionScript3で作る写真ギャラリー
久しぶりのFlashの投稿です。最近はjQueryばっかりでした。。。
ファイル構成
まずflaファイルを作成します。名称は何でもOKです。
次に読み込む外部asファイルを作成します。名称は「Gallery.as」にしています。
最後にimgフォルダを作成します。ここにギャラリー画像を格納します。
asファイル名
今回は外部asファイルの名称を「Gallery.as」で作成しました。
もしファイル名を変更する場合は、14行目と21行目も同名にする必要があります。
また、flaファイルの読み込むドキュメントクラスも変更が必要です。
画像ファイルの命名規則
imgフォルダにある画像ファイルには命名規則があります。
1番目の画像は「img1.jpg」となり、次に表示される画像は連番でなくてはならないので「img2.jpg」となります。
ActionScriptソース
package {
import flash.display.MovieClip;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.geom.Point;
import flash.utils.Timer;
import flash.net.URLRequest;
//クラスの宣言
public class Gallery extends MovieClip {
var obj:Array;
var clickNum:int = -1;
var timer:Timer;
//コンストラクタ
function Gallery(){
obj = new Array();
//ステージに表示する画像の初期設定
for(var i:Number = 0; i < 4; ++i) {
obj.push(new Sprite());
var num:Number = obj.length-1;
this.addChild(obj[num]);
obj[num].buttonMode = true;
obj[num].useHandCursor = true;
obj[num].name = String(num);
obj[num].x = stage.stageWidth/2;
obj[num].y = stage.stageHeight/2;
obj[num].scaleX = 0;
obj[num].scaleY = 0;
obj[num].addEventListener(MouseEvent.CLICK, onClick);
var imgLoader:Loader = new Loader();
obj[num].addChild(imgLoader);
obj[num].mouseChildren = false;
//ojb[num]に読み込ませる画像の設定
var urlReq:URLRequest = new URLRequest("img/img"+num+".jpg");
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImgLoaded);
imgLoader.load(urlReq);
}
timer = new Timer(33);
timer.addEventListener(TimerEvent.TIMER, loop);
timer.start();
}
//画像が読み込まれたときの処理
function onImgLoaded(event:Event):void {
event.target.loader.x = -event.target.loader.width/2;
event.target.loader.x = -event.target.loader.height/2;
var num:int = int(event.target.loader.parent.name);
}
//画像がクリックされたときの処理
function onClick(event:MouseEvent):void {
if(clickNum == int(event.target.name)) {
clickNum = -1;
} else {
clickNum = int(event.target.name);
}
}
//常時繰り返される処理
function loop(event:TimerEvent):void{
for(var i:Number = 0; i < obj.length; i++) {
var place:Point = new Point();
var size:Number;
//画像のクリック後の位置とクリック前の位置
if(clickNum == i) {
place.x = stage.stageWidth/2;
place.y = stage.stageHeight/6;
size = 0.15;
} else {
place.x = stage.stageWidth/6 + (i*100);
place.y = stage.stageHeight/1.5;
size = 0.05;
}
//動作のスピードを調整
obj[i].x += (place.x - obj[i].x)/4;
obj[i].y += (place.y - obj[i].y)/4;
//画像のサイズスピードを調整
obj[i].scaleX += (size - obj[i].scaleX)/2;
obj[i].scaleY += (size - obj[i].scaleY)/2;
}
}
}
}
ActionScriptソースの解説
ソースが長いので、ピックアップして解説します。
- 16行目:var obj:Array
- 変数objを配列Array属性に格納します。
これで複数の要素を格納することができます。
- 25行目:for文
- 変数iをNumber型にします。
画像をn枚読み込ませる場合は「i < n」にします。 今回の場合は4枚なので「i < 4」となります。
- 26行目:obj.push(new Sprite());
- 変数objの最後尾にスプライトを生成します。
27行目の「var num:Number = obj.length-1;」でその配列番号をnumに取得しています。
これでスプライトをobj[num]と扱えます。
28行目でステージに登録します。27行目の「var num:Number = obj.length-1;」にする理由は、配列が「0」から始まるので、objの最後尾の数値は「4」でなく「3」である必要があるためです。
サンプル
かなりソースが長くややこしいですが、いろいろ触って見て下さい。
- Web-Parkのホーム >
- Flash >
- ActionScript3.0で作る写真ギャラリー
Warning: count(): Parameter must be an array or an object that implements Countable in /home/markcrest/web-park.org/public_html/wordpress/wp-includes/class-wp-comment-query.php on line 405
COMMENT PLEASE!!
トラックバック
- 「ActionScript3.0で作る写真ギャラリー」のトラックバックURL
Warning: Use of undefined constant display - assumed 'display' (this will throw an Error in a future version of PHP) in /home/markcrest/web-park.org/public_html/wordpress/wp-content/themes/default/single.php on line 105
https://web-park.org/flash/gallery091109.html/trackback