Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- CLIK
- flash
- 스케일폼
- as3.0
- 태그클라우드
- GDC
- 플래시
- 집합의 연산
- 수학정석
- addChild
- ApplicationDomain
- scaleform3
- flash cs3
- flash player 10
- 강좌
- Chart
- 형변환
- watch
- DataBinding
- scaleform
- as3
- scaleform4
- as2
- 클릭
- KGC 2013
- 애드온
- MMOKit
- 샌프란시스코
- Document Class
- autodesk
Archives
- Today
- Total
scaleform.minarto.com
buttonMode 본문
as 3.0에서는 buttonMode 속성을 true 라고 해줘야 손가락 모양이 나타난다.
그런데 true 라고 해줘도 안나타나는 경우가 있다. 그 경우는 다음과 같다...
var sp:Sprite = new Sprite();
var tf:TextField = new TextField();
tf.text = "미나토입니다";
tf.autoSize = TextFieldAutoSize.LEFT;
sp.addChild(tf);
addChild(sp);
sp.buttonMode = true;
sp.addEventListener(MouseEvent.ROLL_OVER, over);
function over(event:Event):void
{
trace(event);
}
var tf:TextField = new TextField();
tf.text = "미나토입니다";
tf.autoSize = TextFieldAutoSize.LEFT;
sp.addChild(tf);
addChild(sp);
sp.buttonMode = true;
sp.addEventListener(MouseEvent.ROLL_OVER, over);
function over(event:Event):void
{
trace(event);
}
이것은 hitArea 의 영역을 설정해주지 않았기 때문으로 보여진다. hitArea 의 리턴값은 Sprite 인데 TextField 는 Sprite 를 상속받지 않기 때문일 것으로 보인다...
그래서 다음과 같이 코드를 추가하게 되면...
var sp:Sprite = new Sprite();
var tf:TextField = new TextField();
tf.text = "미나토입니다";
tf.autoSize = TextFieldAutoSize.LEFT;
tf.selectable = false;
var hit_sp:Sprite = new Sprite(); // hitArea 의 리턴값이 DisplayObject나 Rectangle 클래스가 아닐까 했지만 Sprite 이다... 그리고 addChild 를 해줘야만 적용된다.
hit_sp.graphics.beginFill(0xFFFFFF, 0);
hit_sp.graphics.drawRect(0, 0, tf.width, tf.height);
sp.addChild(tf);
sp.addChild(hit_sp);
sp.hitArea = hit_sp;
var tf:TextField = new TextField();
tf.text = "미나토입니다";
tf.autoSize = TextFieldAutoSize.LEFT;
tf.selectable = false;
var hit_sp:Sprite = new Sprite(); // hitArea 의 리턴값이 DisplayObject나 Rectangle 클래스가 아닐까 했지만 Sprite 이다... 그리고 addChild 를 해줘야만 적용된다.
hit_sp.graphics.beginFill(0xFFFFFF, 0);
hit_sp.graphics.drawRect(0, 0, tf.width, tf.height);
sp.addChild(tf);
sp.addChild(hit_sp);
sp.hitArea = hit_sp;
sp.buttonMode = true;
addChild(sp);
sp.addEventListener(MouseEvent.ROLL_OVER, over);
function over(event:Event):void
{
trace(event);
}
그런데 tf가 hitArea 의 뎁스(as 3.0에서는 인덱스이지만...) 보다 위에 있다면 buttonMode 가 활성화 되지 않는다.
결과적으로 TextField 가 hitArea 위에 존재한다면 tf의 영역을 제외한 만큼만 buttonMode 가 활성화 된다는 것이다.
같은 DisplayObject 이지만 buttonMode 같은 몇가지 속성 적용에는 다르다는 것을 기억해야 한다.