POPSブログ

FLASH-SLIDESHOW-3

62

  Category:  flash2012/03/24 pops 

FLASH AS3 による、TransitionManagerを使用した、スライドショーです。


FLASH-SLIDESHOW-3

FlashTest166c.swf

フルスクリーン対応「簡単なスライドショー」サンプル表示


FLASH表示テスト 専用のSWF FlashTest166c.swf 640x200


注意、FlashTest166c.swf は「BaserCMS」で使用する専用です。画像は /main/images/xxxx.jpg


簡単な説明

「ページャー」等の無い「簡単なスライドショー」タイプです。

  • FlashDevelopで作りました。AS3表記です。
  • スクリプトだけの資料です。書き換えなどは自由です。
  • 画像URLはスクリプト内部に記載します。
  • ランダムに設定された条件で作動しますので、合わないものもでます。ご了承ください。
  • TransitionManager処理。INのみです。
  • 当方のFlashDevelopの設定により、as swf クラスの名前は同じです。環境にあわせてください。

簡単な動作の説明と問題

説明図



FLASHのビルドインクラスですから別段難しいことはありません。簡単に使用できますが、少し問題があります。
図のように、
1. Rotate回転の原点が違います。中央になりません。修正の必要があります。
2. Rotate、Flyの場合画像の範囲より「はみ出し」ます。
3. 本体のMovieClipにマスクをしてもだめです。MovieClipを一旦包み込み、それにマスクを施せばカットできます。
4. 包み込込むMCなどの原点が左上でなければ、Flyの場合に開始位置がずれることがあります。
5. 他に部材を配置した場合に困りますので、修正します。

詳細は、コードをご覧ください。一括にまとめていますので移動が容易になり、サムネール配置、そのほかの部材配置に問題がおきません。


実際の処理、コード参照のこと。レーヤーはSpriteです。

  • 全てを収容するレーヤー(layer2:Sprite)を用意する。
  • マスク(masklayer:Sprite)をaddする。
  • 上層画像、下層画像を収納するmainBox(mainBox:Sprite)をaddする。
  • mainBoxに下層画像(backImageBox:Sprite)をaddする。INのために常に下層画像がある。
  • mainBoxに上層画像(mainImageBox:MovieClip)をaddする。実際のTransitionManager処理をする所。
  • mainBoxに対しmasklayerでマスク処理をする。回転のはみ出し除去。
  • 全てを収容するレーヤー(layer2)の表示位置を決定(移動)する。

TransitionManager処理するところは必ずMovieClipです。ほかはSpriteにしていますが何でも良い。また全ての画像はBitmapDataの流し込みで処理されています。そのまま表示されることはありません。
画像を取得出来ない場合は、代替のBitmapDataが挿入されるようになっています。

レーヤー(layer2:Sprite)に下層画像、上層画像をいれてlayer2にマスクをしても同じですが、位置の変更の場合2つの位置を変えなければならないので、一体で作ったほうが便利です。


簡単なスクリプト説明


次の数値を変更してください、

[SWF(width="640", height="200", frameRate="30", backgroundColor="0x000000")]

//大きさ/現在上で決めている
private var boxWidth:Number = 640;
private var boxHeight:Number = 200;

//main-image 画像のおおきさを決定する
private var image_W:Number = 640;
private var image_H:Number = 200;

表示時間間隔
private var auto_time:Number = 7000;//5000-100000

画像の登録
//画像URL 640x200
imageUrls = [
	"images/photo_m1.jpg",
	"images/photo_m2.jpg",
	"images/photo_m3.jpg",
	"images/photo_m4.jpg",
	"images/photo_m5.jpg"
];
//画像説明文
imageMess = [
	"画像説明 1",
	"画像説明 2",
	"画像説明 3",
	"画像説明 4",
	"画像説明 5"
];

-----------------------------------------------------

速度の調整は、527行前後

var duration:Number = 1.5;//速度1-2

条件により変えたい場合は、

if (trans_no == 4) {transitionType = Rotate; duration = 3.0;}
等とできます

AS3からtransitionTypeはクラスになったそうです(AS2 前はFunction)
TransitionManager実行の分岐の場合、次のように書いている

if (trans_no == 4) {transitionType = Rotate;}
myTransitionManager.startTransition({type:transitionType, .............

果てさて、よくわからんが、これで認識する、これはハテナである
(前のAS2 Functionでも同じ書き方をした、Functionもクラスだ)
TransitionManagerを単体で使用する資料は多いが、複数の分岐に関するものは無い

AS3

as FlashTest166c.as

FlashDevelopで制作しました。中には使用していない変数もあります。画像URLなどは環境に合わせてください。
サムネール配置、または保管の部材を配置しても、画像のはみ出しが出無い構造になっています。


//TRAN_SlideShow
//TransitionManager
//FlashTest166c
//Matrix画像の中心補正//Inに対応して下に画像を配置する

package
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.geom.*;
	import flash.system.*;
	import flash.utils.*;
	import flash.text.*;
	//Transition
	import fl.transitions.*;
	import fl.transitions.easing.*;
	//虹色用
	import frocessing.color.ColorHSV;
	//Tween
	import com.greensock.*;
		
	[SWF(width="640", height="200", frameRate="30", backgroundColor="0x000000")]

	public class FlashTest166c extends Sprite {
		//layer
		private var layer1:Sprite;
		private var layer2:Sprite;
		private var masklayer:Sprite;
		//textlayer
		private var textlayer:Sprite;
		private var square2:Sprite;
		//Text
		private var tf:TextField;
		//title
		private var mvtf:TextField;
		//大きさ/現在上で決めている
		private var boxWidth:Number = 640;
		private var boxHeight:Number = 200;
		//LOADER
		private var loader:Loader;
		//Loading
		private var indicator:DisplayObject;
		//main-image
		private var photomax:int = 0;
		private var photomax2:int = 0;//修正用
		private var countImage:int = 0;
		private var mainImages:Array = [];//Array-Bitmap
		//main-image 画像のおおきさを決定する
		private var image_W:Number = 640;
		private var image_H:Number = 200;
		//mainImageBox mainBox
		private var mainBox:Sprite;
		private var mainImageBox:MovieClip;//MovieClip
		private var backImageBox:Sprite;//背景用画像BOX
		//番号
		private var show_no:int = 0;//現在表示番号
		//Urlの保存
		private var imageUrls:Array = [];
		//画像の説明文の保存
		private var imageMess:Array = [];
		//自動
		private var autoTimer:Timer;
		private var auto_time:Number = 7000;//5000-100000
		//FullScreenButton
		private var fullScreenBtn:Sprite;

		public function FlashTest166c ():void {
			
			//ステージ
			stage.align = StageAlign.TOP_LEFT;
			stage.quality = StageQuality.HIGH;
			//stage.scaleMode = StageScaleMode.NO_SCALE;//使用しない
			stage.fullScreenSourceRect = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
			
			//BASE/黒背景
			var square:Sprite = new Sprite();
			square.graphics.beginFill(0x0000);//0x000000
			square.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
			square.graphics.endFill();
			addChild(square);
			
			//layer1
			layer1 = createSquare( 0, 0, 0, 0, 0x000000, 1);
			addChild(layer1);
			layer1.visible = false;
			
			//layer2/全体を移動できるようにmasklayer、mainBox収容、layer2に入れる
			layer2 = createSquare( 0, 0, 0, 0, 0x000000, 1);
			addChild(layer2);
			layer2.visible = false;
			
			//mainImageBox用のマスクとして利用する、layer2に入れる
			masklayer = createSquare( 0, 0, image_W, image_H, 0x000000, 0);
			masklayer.x = 0;
			masklayer.y = 0;
			layer2.addChild(masklayer);
			masklayer.visible = false;
			
			//mainImageBox収容用Flyのはみ出し除去、中心補正をするとFlyがずれるのでしないこと
			//layer2に入れる
			mainBox = createSquare( 0, 0, image_W, image_H, 0x000000, 1)
			backImageBox = createSquare(0, 0, image_W, image_H, 0x000000, 1);
			mainBox.addChild(backImageBox);
			layer2.addChild(mainBox);
			
			//MovieClip、中心補正の位置の計算が面倒、回転がなければ要らないのだが、mainBoxに入れる
			mainImageBox = new MovieClip();//MovieClipであること
			mainImageBox.graphics.beginFill(0x000000, 1);
			mainImageBox.graphics.drawRect( -image_W / 2, -image_H / 2, image_W, image_H);
			mainImageBox.graphics.endFill();
			mainImageBox.x = image_W / 2;
			mainImageBox.y = image_H / 2;
			//mainBoxにaddChild
			mainBox.addChild(mainImageBox);
				
			//マスクをかける設定、Rotateのはみ出し除去
			mainBox.mask = masklayer;
			
			//layer1、全体の位置を決定する
			layer2.x = 0;
			layer2.y = 0;
			layer2.visible = true;
			
			//LOADING
			indicator = new Indicator();
			//indicator.x = stage.stageWidth / 2;
			//indicator.y = stage.stageHeight / 2;
			indicator.x = 12;
			indicator.y = 15;
			indicator.addEventListener(Event.ENTER_FRAME, step);//回転Listener
			addChild(indicator);
			indicator.visible = false;
			
			//textlayer-hover収容BOX
			textlayer = new Sprite();
			addChild(textlayer);
			textlayer.visible = false;
			
			//TEXT背景Spriteボックス作成1/alpha=0.4
			square2 = createSquare(0, 0, stage.stageWidth, 30, 0x000000, 0.4);
			textlayer.addChild(square2);
			
			//text
			tf = createTextField(25, 5, stage.stageWidth - 60, 20);
			tf.textColor = 0xFFFFFF;
			tf.text = "";
			square2.addChild(tf);
			
			//FullScreenButton
			fullScreenBtn = createFullScreenButton();
			fullScreenBtn.x = stage.stageWidth - 35;
			fullScreenBtn.y = 2;
			square2.addChild(fullScreenBtn);
			
			//title
			mvtf = new TextField();
			addChild(mvtf);
			
			//FULLSCREEN-ACTION
			fullScreenBtn.addEventListener(MouseEvent.CLICK, fullClickHandler);
			
			//textlayer-Listener
			stage.addEventListener(MouseEvent.MOUSE_OVER, openTextLayer);
			stage.addEventListener(MouseEvent.MOUSE_OUT, closeTextLayer);
			
			//GOTO-Url_Set
			loadImage_Url_Set();
		}
		// 画像URL-SET
		private function loadImage_Url_Set():void {
			//画像URL 640x200
			imageUrls = [
				"/main/images/photo_tm1.jpg",
				"/main/images/photo_tm2.jpg",
				"/main/images/photo_tm3.jpg",
				"/main/images/photo_tm4.jpg",
				"/main/images/photo_tm5.jpg"
			];
			//画像説明文
			imageMess = [
				"画像説明 1",
				"画像説明 2",
				"画像説明 3",
				"画像説明 4",
				"画像説明 5"
			];
			//カウント
			countImage = 0;
			//画像数
			photomax = imageUrls.length;
			//LOADING表示
			indicator.visible = true;
			//GOTO-loadImage
			loadImage();
		}
		// 画像をロード
		private function loadImage():void {
			//
			loader = new Loader();
			var imageName:String = imageUrls[countImage];
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete_img);//
			loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);//Error
			loader.load(new URLRequest(imageName));//loader
		}
		private function onComplete_img(event:Event):void {
			loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete_img);
			tf.text = "画像読み込み中";
			
			//Matrixを使用
			var mainloader:Loader = event.currentTarget.loader;
			var ratio:Number = image_W / loader.width;//縮尺比率
			var matrix:Matrix = new Matrix();
			matrix.scale(ratio, ratio);
			var bd2:BitmapData = new BitmapData(image_W, image_H, false);
			bd2.draw(mainloader, matrix);//Matrixを適応
			mainImages.push(bd2);
			
			countImage ++;
			
			//全て読み込んだらinitにまだなら残り画像をロードする
			if (countImage >= photomax) {
				//LOADING非表示
				indicator.visible = false;
				//画像をロード終了goto-init
				init();
			} else {
				//残り画像をLoad
				loadImage();
			}
			
		}
		// INIT
		private function init():void {
			//init
			tf.text = "";
			//画像数再セット
			photomax = mainImages.length;
			var i:int = 0;
			//タイマーセット
			timer_set();
			//最初の画像を表示
			show_Image(0);
			//goto-main
			main_action();
		}
		
		// MAIN-ACTION
		private function main_action():void {
			
			//main_action as3 hear
			var msg:String="POPS WEB KOUBOU";
			var mvtextColor:uint;
			var nAngle:Number = Math.PI * 2 / msg.length;
			var cAngle:Number = 0;
			//TextFormat
			var tfm:TextFormat = new TextFormat("_sans", 40, 0x666666, true);
			mvtf.defaultTextFormat = tfm;
			mvtf.autoSize = TextFieldAutoSize.LEFT;
			mvtf.text = msg;//msg.substr(i, 1)
			mvtf.textColor = 0x000000;
			mvtf.selectable = false;
			//個別に着色
			for (var i:int = 0; i < msg.length; ++i) {
				//虹色にそめる
				var hsv:ColorHSV = new ColorHSV(0, 1, 1, 1);
				hsv.h = cAngle / Math.PI * 180;
				//虹色を取得受け渡す
				mvtextColor = hsv.value;
				cAngle += nAngle;
				var tfm2:TextFormat = new TextFormat();
				tfm2.color = mvtextColor;
				mvtf.setTextFormat(tfm2, i);
			}
			//位置の確定
			mvtf.x = (stage.stageWidth - mvtf.width) / 2;
			mvtf.y = (stage.stageHeight - mvtf.height) / 2;
			//Fade-Out
			TweenMax.to(mvtf, 2, { delay:10, alpha:0, onComplete:function ():void {
				mvtf.y = -200;
				mvtf.visible = false;
			}});
			//
		}
		
		//show-image
		private function show_Image(no:int):void
		{
			//画像説明文
			//tf.text = " 番号 " + no + " / URL " + imageUrls[no];
			tf.text = imageMess[no];
			
			//mainImageBox/MovieClip
			//画像表示用/layer1流し込み/bitmapData
			//MatrixでbeginBitmapFillをずらすと画像の中心補正が出来る
			var matrix:Matrix = new Matrix();
			matrix.translate( -image_W / 2, -image_H / 2);//-方向移動
			mainImageBox.graphics.clear();
			//select_noに注意
			mainImageBox.graphics.beginBitmapFill(mainImages[no], matrix, false, false);
			//xy位置もマイナス方向になる
			mainImageBox.graphics.drawRect( -image_W / 2, -image_H / 2, image_W, image_H);
			mainImageBox.graphics.endFill();
			
			mainImageBox.width = image_W;
			mainImageBox.height = image_H;
			
			//現在表示番号に代入
			show_no = no;
			
			//'Blinds','Fade','Fly','Iris','Photo','PixelDissolve','Rotate','Squeeze','Wipe','Zoom'	
			//None.easeNone/Elastic.easeOut/Strong.easeOut/Strong.easeInOut/Bounce.easeOut
			//全てIN
			
			var duration:Number = 1.5;//速度1-2
			//設定条件
			var numStrips:int = (Math.random() * 12) + 1;//1-12分割
			var dimension:int = Math.random() * 2;//1 0 分割縦横
			var startPoint:int = (Math.random() * 9) + 1;//位置
			//shape ccw
			var shape_v:int = Math.random() * 2;
			var shape:Object = Iris.SQUARE;//四角 丸
			var ccw:Boolean = false;//回転方向
			//競合しないので2種の鑑定にしようする
			if(shape_v) { shape = Iris.CIRCLE; ccw = true; }
			//easing
			var easing_v:int = Math.random() * 3;
			var easing:Object = Bounce.easeOut;
			if(easing_v == 0) { easing = None.easeNone; }
			if (easing_v == 2) { easing = Regular.easeOut; }//Regular Elastic
			
			//Function認識しない/AS3ではClassにしなければならない
			var transitionType:Class;
			var trans_no:int = 1 + Math.random() * 20;//1-20
			var no_flag:int = 0;//一部判定のフラグ
			
			//分岐、このように記述しないと認識しない、中には変化なしのものもあり
			//Fade PixelDissolve の場合 easingはないほうが良い
			if (trans_no < 2) {transitionType = Zoom;}//1
			if (trans_no == 2) {transitionType = Fade; easing = None.easeNone;}
			if (trans_no == 3) { transitionType = Photo; }
			if (trans_no == 4) { transitionType = Rotate; }
			if (trans_no == 5 || trans_no == 6) { transitionType = PixelDissolve; easing = None.easeNone; no_flag = 1; }
			if (trans_no == 7 || trans_no == 8) {transitionType = Squeeze;}
			if (trans_no == 9 || trans_no == 10) {transitionType = Fly;}
			if (trans_no == 11 || trans_no == 12 || trans_no == 13) {transitionType = Iris;}
			if (trans_no == 14 || trans_no == 15) {transitionType = Wipe;}//startPoint 5 でも動く
			if (trans_no > 15) { transitionType = Blinds; }
			
			//PixelDissolveの場合だけの処理
			if (no_flag) {
				//PixelDissolveの縦横分割数/変化をつける
				var xySection_v:int = Math.random() * 5;
				var xyS_v2:int = 1 + Math.random() * 4;
				//正方形にちかずける/10 20 30 40の正方形
				var xSections:int = int(image_W / (10 * xyS_v2));//10-40の正方形
				var ySections:int = int(image_H / (10 * xyS_v2));
				//ランダム分割/2x2以上、ばらばらな大きさ、あまり小さくしない
				if (xySection_v > 3 ) {
					xSections = 2 + Math.random() * 8;
					ySections = 2 + Math.random() * 5;
				}
			}
			
			//var transitionType:Class = PixelDissolve;
			var myTransitionManager:TransitionManager = new TransitionManager(mainImageBox);
			//Listener
			myTransitionManager.addEventListener("allTransitionsInDone", doneTrans);
			//start
			myTransitionManager.startTransition({type:transitionType, direction:Transition.IN, duration:duration, easing:easing, startPoint:startPoint, numStrips:numStrips, dimension:dimension, shape:shape, xSections:xSections, ySections:ySections, ccw:ccw});
			//
		}
		
		//TransitionManager-Listener
		private function doneTrans(e:Event):void {
			//back画像を描画する
			//Matrixはなし
			backImageBox.graphics.clear();
			backImageBox.graphics.beginBitmapFill(mainImages[show_no], null, false, false);
			//xy位置00
			backImageBox.graphics.drawRect(0, 0, image_W, image_H);
			backImageBox.graphics.endFill();
			//tf.text = "allTransitionsInDone event occurred";
			//タイマースタート
			autoTimer.start();
		}
		
		//タイマーセット
		private function timer_set():void {
			autoTimer = new Timer(auto_time, 1);
			autoTimer.addEventListener(TimerEvent.TIMER_COMPLETE, completeTimerHandler);
		}
		//タイマーcomplete
		private function completeTimerHandler(e:TimerEvent):void {
			//タイマーは1回のみ有効
			autoTimer.stop();
			//次ぎ画像表示に進む 受け渡し現在表示番号のチェック
			//現在番号加算
			show_no ++;
			if (show_no > photomax - 1) { show_no = 0; }
			show_Image(show_no);
		}
		//TextLayer
		private function openTextLayer(e:MouseEvent):void {
			textlayer.visible = true;
		}
		private function closeTextLayer(e:MouseEvent):void {
			textlayer.visible = false;
		}
		
		//ERROR画像取得失敗
		private function ioErrorHandler(event:IOErrorEvent):void {
			
			//ERROR処理
			tf.text = "LOADING-EROOR";
			//画像取得失敗の場合には、画像かわりのBitmapDataを挿入
			var bd2:BitmapData = new BitmapData(image_W, image_H, false, 0x333333);
			//No-Imageの文字を挿入
			var t:TextField = new TextField();
			var tfm:TextFormat = new TextFormat("_sans", 40, 0x888888, true);
			t.defaultTextFormat = tfm;
			t.autoSize = TextFieldAutoSize.LEFT;
			t.text = "No-Image";
			var matrix:Matrix = new Matrix();
			matrix.translate((image_W - t.width) / 2, (image_H - t.height) / 2);
			bd2.draw(t, matrix);
			//BitmapDataの保存
			mainImages[countImage] = bd2;
			
			//画像ERRORならカウントをすすめて次ぎ画像ロードに進む
			countImage ++;
			loadImage();
		}
		
		//create-GradBox
		private function draw_grad_box(w:uint, h:uint, color1:uint, color2:uint):Sprite {
			var gb:Sprite = new Sprite();
			var colors:Array = [color1, color2];
			var alphas:Array = [1, 1];
			var ratios:Array = [0, 255];
			var matrix:Matrix = new Matrix();
			matrix.createGradientBox(w * 1.5, h * 1.5, 0, -w * 0.25, -h * 0.25);
			gb.graphics.beginGradientFill(GradientType.RADIAL, colors, alphas, ratios, matrix, SpreadMethod.PAD, InterpolationMethod.RGB, 0);
			gb.graphics.drawRect(0, 0, w, h);
			gb.graphics.endFill();
			//addChild(gb);
			return gb;
		}
		//create-box
		private function createSquare(x:Number, y:Number, width:Number, height:Number, color:Number, alpha:Number):Sprite {
			var s:Sprite = new Sprite();
			s.graphics.beginFill(color, alpha);
			s.graphics.drawRect(x, y, width, height);
			s.graphics.endFill();
			//addChild(s);
			return s;
		}
		//create-Roundbox
		private function createSquare2(x:Number, y:Number, width:Number, height:Number, color:Number, alpha:Number, round:Number):Sprite {
			var rs:Sprite = new Sprite();
			rs.graphics.beginFill(color, alpha);
			rs.graphics.drawRoundRect(x, y, width, height, round);
			rs.graphics.endFill();
			//addChild(rs);
			return rs;
		}
		//create-text
		private function createTextField(x:Number, y:Number, width:Number, height:Number):TextField {
			var result:TextField = new TextField();
			result.x = x;
			result.y = y;
			result.width = width;
			result.height = height;
			//addChild(result);
			return result;
		}

		//LOADING回転
		private function step(evt:Event):void {
			indicator.rotation = (indicator.rotation + 360 / stage.frameRate) % 360;
		}
		//FullScreenBtn CLICK
		private function fullClickHandler(e:MouseEvent):void {
			stage.displayState = (StageDisplayState.FULL_SCREEN==stage.displayState)?StageDisplayState.NORMAL:StageDisplayState.FULL_SCREEN
		}
		//FullScreenButton
		private function createFullScreenButton():Sprite {
			// 画面右下にボタン配置(YouTube風)
			var margin:Number = 10;
			var b:Sprite = new Sprite();
			b.graphics.lineStyle();
			b.graphics.beginFill(0x4d4d4d);
			b.graphics.drawRoundRect(7, 5, 21, 14, 3);
			b.graphics.beginFill(0xc1c1c1);
			b.graphics.drawRoundRect(8, 6, 10, 6, 2);
			b.graphics.endFill();
			b.buttonMode = true;
			return b;
		}
		
	}
	
}

//LOADING-Shape
import flash.display.Shape;
class Indicator extends Shape {
	public function Indicator() {
		var i:uint,
		cx:Number, cy:Number,
		numNeedles:uint = 12,
		innerR:Number = 7,
		outerR:Number = 5,
		cAngle:Number = -Math.PI / 2,
		nAngle:Number;

		nAngle = Math.PI * 2 / numNeedles;
		for (i=0; i<numNeedles; i++) {
			cAngle += nAngle;
			cx = Math.cos(cAngle) * innerR;
			cy = Math.sin(cAngle) * innerR;
			graphics.moveTo(cx, cy);

			cx = Math.cos(cAngle) * outerR;
			cy = Math.sin(cAngle) * outerR;
			graphics.lineStyle(2, 0xffffff, i/numNeedles);
			graphics.lineTo(cx, cy);
		}
	}
}

簡易に作った場合の例


			//mainImageBox用のマスクとして利用する/移動の場合は2つ移動すること
			masklayer = createSquare( 0, 0, image_W, image_H, 0x000000, 0);
			masklayer.x = 0;
			masklayer.y = 60;
			addChild(masklayer);
			masklayer.visible = false;
			
			//layer2/全体を移動できるように画像収容boxを、layer2に入れる
			layer2 = createSquare( 0, 0, 0, 0, 0x000000, 1);
			addChild(layer2);
			layer2.visible = false;
			
			//backImageBox収容用layer2に入れる
			backImageBox = createSquare(0, 0, image_W, image_H, 0x000000, 1);
			layer2.addChild(backImageBox);
			
			//MovieClip、中心補正の位置の計算が面倒、回転がなければ要らないのだが、layer2に入れる
			mainImageBox = new MovieClip();//MovieClipであること
			mainImageBox.graphics.beginFill(0x000000, 1);
			mainImageBox.graphics.drawRect( -image_W / 2, -image_H / 2, image_W, image_H);
			mainImageBox.graphics.endFill();
			mainImageBox.x = image_W / 2;
			mainImageBox.y = image_H / 2;
			layer2.addChild(mainImageBox);
				
			//Fly Rotate のはみ出し除去
			//masklayerが外にあるのでlayer2にマスクをかける設定
			layer2.mask = masklayer;
			
			//layer2、全体の位置を決定する
			layer2.x = 0;
			layer2.y = 60;
			layer2.visible = true;

TransitionManagerクラスの参考記事

【参考】project-nya.jp: TransitionManagerを使ってみる

【参考】republicofcode.com: Using the TransitionManager Class in AS3

【参考】1art.jp: TransitionManager クラス


以上です。



[ この記事のURL ]


 

ブログ記事一覧



[1]