2008.01.24 11:08
프로젝트에서 간단한 알림창을 필요로 했었는데, 이걸 사용자가 확인버튼을 누르려니 상당히 귀찮았습니다.
단순히 잠깐 떠있다가 없어져도 되는 것인데 말이죠.
Alert에 다가 원하는 시간을 대입하면 Alert 출력 후에 입력한 시간이 지난 후 없어지도록 만들어보았습니다.

다음과 같이 간단하게 사용하시면 됩니다.

AutoDestroyAlert.show("경고창 띄우기입니다. 곧 사라집니다.", "알림", 1000);



소스는 아래를 참고하시면 되겠습니다.

package com.warkyman
{

    import flash.events.TimerEvent;

    import flash.utils.Timer;

      

    import mx.controls.Alert;

    import mx.events.CloseEvent;

    import mx.managers.PopUpManager;

 

    public class AutoDestroyAlert

    {

        // 일정 시간동안만 Alert 보여주기. (경고용)

       

public static function show(text:String = "", title:String = "",
                                 destr
oyTime:Number = 1000, iconClass:Class = null):Alert

        {
            var myAlert:Alert;

            var myTimer:Timer;

 

            // destroyTime 타이머 발생

            function timerEventHandler(evt:TimerEvent):void

            {

                myTimer.stop();// 타이머 종료

                mx.managers.PopUpManager.removePopUp(myAlert); // Alert 제거

            }

            myTimer = new Timer(destroyTime,1); // 타이머를 설정된 값에 맞게 Setting

            myTimer.addEventListener(TimerEvent.TIMER, timerEventHandler); // 이벤트핸들러 등록

 
            myAlert = Alert.show(text, title, 4.0, null, null, iconClass, 4.0); // Alert 표시

            myTimer.start(); // 타이머 시작

                   

            return myAlert;

          }

     }

}


그럼 즐거운 개발 되시길!!!
신고
Creative Commons License
Creative Commons License
Favicon of http://nabina.net BlogIcon nabina | 2008.01.24 11:37 신고 | PERMALINK | EDIT/DEL | REPLY
setTimeout()으로 하는 게 더 간편하지 않을까요?
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.01.24 11:58 신고 | PERMALINK | EDIT/DEL
물론 더 간편하게 쓸 수 있습니다!! ^^

flash.utils.setTimeout() 같은 경우는 AS 2.0에 있던 메소드인데 호환성 목적으로 남아있다고 알고 있습니다.
문서에서도 Timer 클래스를 사용 하는 것을 추천하네요.

게다가 저는 플래시에 있던 메소드에 익숙하질 않아서 ^^;
Favicon of http://nabina.net BlogIcon nabina | 2008.01.24 17:48 신고 | PERMALINK | EDIT/DEL
아하. 그렇군요-
추천하는 걸로 사용하는 게 좋죠.
아닌 건 언제 없어질지 모르는 메소드일테니= _=;;;
Favicon of http://rollin96.springnote.com/pages/2401724 BlogIcon 굴돌 | 2008.12.30 01:24 신고 | PERMALINK | EDIT/DEL | REPLY
setTimeout()으로 했더니 메모리릭이 있더군요...제가 잘못한것일지도 모르겠지만...밑에 소스 올려볼께요.
그리고 검쉰님...
AutoDestoryAlert ->
AutoDestroyAlert
한참 해맸습니다 ㅠ.ㅠ...Flex Builder가 오류를 못 찾아줘서...ㅠ.ㅠ
단순오타: destoryTime -> destroyTime
그런데 지금보니 오래된 포스트군요. ^^;
---------------------
public static function timedAlertEx( alert:Alert ):void {
//*

// setTimeout() 방식. N/G. 메모리 leak이 있다.
function timerEventHandler():void
{
mx.managers.PopUpManager.removePopUp( alert ); // Alert 제거
}

setTimeout( timerEventHandler, 500 );

/*/

// Timer() 방식. OK.
var myTimer:Timer;

function timerEventHandler(evt:TimerEvent):void
{
myTimer.stop();// 타이머 종료
mx.managers.PopUpManager.removePopUp( alert ); // Alert 제거
}
myTimer = new Timer(1100,1); // 타이머를 설정된 값에 맞게 Setting
myTimer.addEventListener(TimerEvent.TIMER, timerEventHandler ); // 이벤트핸들러 등록

myTimer.start(); // 타이머 시작
//*/
}
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.30 13:48 신고 | PERMALINK | EDIT/DEL
애초에 예제작성시 오타가 있었네요 ㅎ ^^;;
setTimeout 은 메모리릭이 있군요 ㅎㅎ 실제 테스트는 안해봐서 몰랐습니다. ;)
좋은 사실 알려주셔서 감사합니다.
본문은 수정하도록 할께요~ ^^
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret