현재 상황
- 화면상에 여러개의 버튼과 textfield를 추가
- script로 for문을 돌려서 실행하였고 그걸 다시 line 별로 같은 line의 textfield값의 받아서 처리 해야함
- script에서 new로 button을 생성하다보니.. addEventListener 처리를 하다보니 받을 수 있는 값은 event 밖에 없음
처리 방법
- button 상속후 버튼에 사용할 propeties 정의 setter/getter 추가
- script에서 for문 이용해서 button 생성시 id값 넘겨줌
- event 처리부에서 event.currentTarget.새로정의한properties 값 받아서 처리
[code]package custom
{
import mx.controls.Button; public class ExtendButton extends Button
{
private var _currentId:String; public function ExtendButton()
{
super();
}
public function get currentId():String {
return _currentId;
}
public function set currentId(currentId:String):void {
_currentId = currentId;
}
}
}[/code]
위 처러 만든 후에
[code]var button:ExtendButton = new ExtendButton();
for(var i:int=1;i<10;i++) {
button.currentId = "a"+i;
}
button.addEventListener(MouseEvent.CLICK,function(event:MouseEvent):void{
trace(event.currentTarget.currentId)
});[/code]
이렇게 만들었음
------------------------------------------------------------------------------
여기서 부터는 질문
http://blog.flashplatform.kr/tag/keep-generated-actionscript
위의 링크방식대로 한다고 하면
generated라고 옵션은 줘서 as 스크립트를 전부 만들어서 거기에서 추가적으로
처리를 해야지 처리가 가능한거지?? ㅡㅡ;;
아니면 안되는건지 알고 싶습니다.
for문이니깐.... Repeater쓰는 것이고
답글삭제for를 쓰던 (as) repeater (mxml)를 쓰던 내부 돌아가는 값에
data를 만들고 쓰면 됨.
ex)
<mx:Repeater id="rp" dataProvider={arrData}>
<mx:Button data="{rp.currentItem}" />
</mx:Repeater>
위같이 짜 놓으면 버튼 클릭 시 해당 버튼에서 data값을 추출해서 사용하면 땡~~
참고 flex4에서는 data라는 프로퍼티 없으니 만들어 주면 됨.
flex3에서는 그냥 쓰면 되고...
그리고 중요한건 구글 검색하면 나옴......
function(event:MouseEvent):void{
답글삭제trace(event.currentTarget.currentId);
// currentId에 따라 원하는 파라미터로 원하는 메소드를 호출함.
switch(event.currentTarget.currentId)
{
case "A":
somethingMethod(event, "this is Parameter");
break;
}
}
function somethingMethod(event:MouseEvent, param:String):void
{
// Something TODO:
}
@검쉰 - 2010/11/04 11:57
답글삭제이렇게 하면 쉽게 되네요. currentTarget.currentId 하면 되는군요. 감사합니다.
@wonsama - 2010/11/01 19:17
답글삭제사람마다 전부 다른 생각과 방법을 가지고 있네요. ^^