[AS 3.0] Instance Name으로 다른 클래스 제어

ActionScript 3.0 — Tags: , — Siaa @ 11:06 am

서로 다른 클래스로 등록된 놈들을 Instance Name을 이용해서 제어하기.

//Main.as
package  {

	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.*;
	import fl.motion.easing.*;
	import gs.TweenLite;

	public class Main extends Sprite {

		private var boxA:BoxA;
		private var boxB:BoxB;

		public function Main() {

			for (var i:int = 0; i < 3; i++) {
				boxA = new BoxA((i * 160) + 140, 60, "A" + i);
				boxA.addEventListener(MouseEvent.MOUSE_OVER, setBoxAMouseOverHandler);
				boxA.addEventListener(MouseEvent.MOUSE_OUT, setBoxAMouseOutHandler);
				addChild(boxA);
			}

			for (var j:int = 0; j < 3; j++) {
				boxB = new BoxB((j * 160) + 140, 140, "B" + j);
				boxB.addEventListener(MouseEvent.MOUSE_OVER, setBoxBMouseOverHandler);
				boxB.addEventListener(MouseEvent.MOUSE_OUT, setBoxBMouseOutHandler);
				addChild(boxB);
			}

		}

		private function setBoxAMouseOverHandler(e:MouseEvent):void {
			var _targetName:String = "B" + e.target.name.substr(1, 1);
			var _target:MovieClip = e.target.root.getChildByName(_targetName);
			tweenMotion(_target, 0.5, 1.2, 1.2);
		}

		private function setBoxAMouseOutHandler(e:MouseEvent):void {
			var _targetName:String = "B" + e.target.name.substr(1, 1);
			var _target:MovieClip = e.target.root.getChildByName(_targetName);
			tweenMotion(_target, 0.5, 1, 1);
		}

		private function setBoxBMouseOverHandler(e:MouseEvent):void {
			var _targetName:String = "A" + e.target.name.substr(1, 1);
			var _target:MovieClip = e.target.root.getChildByName(_targetName);
			tweenMotion(_target, 0.5, 1.2, 1.2);
		}

		private function setBoxBMouseOutHandler(e:MouseEvent):void {
			var _targetName:String = "A" + e.target.name.substr(1, 1);
			var _target:MovieClip = e.target.root.getChildByName(_targetName);
			tweenMotion(_target, 0.5, 1, 1);
		}

		private function tweenMotion(target:Object, duration:Number, sx:Number, sy:Number):void {
			TweenLite.to(target, duration, {scaleX:sx, scaleY:sy, ease:Elastic.easeOut } );
		}
	}
}
//BoxA
package {

	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.events.*;
	import fl.motion.easing.*;
	import gs.TweenLite;

	public class BoxA extends MovieClip{

		public function BoxA(_x:int, _y:int, _name:String) {
			x = _x;
			y = _y;
			name = _name;
			Num.text = _name;
			mouseChildren = false;
			buttonMode = true;
			addEventListener(MouseEvent.CLICK, setClickHandler);
		}

		private function setClickHandler(e:MouseEvent):void {
			tweenMotion(e.target, 0.5, 1);

			var _targetName:String = "B" + e.target.name.substr(1, 1);
			var _target:MovieClip = e.target.root.getChildByName(_targetName);
			tweenMotion(_target, 0.5, 0.5);
		}

		private function tweenMotion(target:Object, duration:Number, alpha:Number):void {
			TweenLite.to(target, duration, {alpha:alpha, ease:Elastic.easeInOut } );
		}
	}
}
//BoxB
package {

	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.events.*;
	import fl.motion.easing.*;
	import gs.TweenLite;

	public class BoxB extends MovieClip {

		public function BoxB(_x:int, _y:int, _name:String) {
			x = _x;
			y = _y;
			name = _name;
			Num.text = _name;
			mouseChildren = false;
			buttonMode = true;
			addEventListener(MouseEvent.CLICK, setClickHandler);
		}

		private function setClickHandler(e:MouseEvent):void {
			tweenMotion(e.target, 0.5, 1);

			var _targetName:String = "A" + e.target.name.substr(1, 1);
			var _target:MovieClip = e.target.root.getChildByName(_targetName);
			tweenMotion(_target, 0.5, 0.5);
		}

		private function tweenMotion(target:Object, duration:Number, alpha:Number):void {
			TweenLite.to(target, duration, {alpha:alpha, ease:Elastic.easeInOut } );
		}
	}
}
Share

0 Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2012 blog.flasia.com | powered by WordPress with Barecity