[AS 3.0] Instance Name으로 다른 클래스 제어
서로 다른 클래스로 등록된 놈들을 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 } );
}
}
}
