flash/Tip | 2006/07/25 02:10

flash에서 어느정도 actionscript 를 다룰줄 아는 사람이라면 output 창을 통해 출력되는 에러메시지나 오류를 해석해서 문제를 해결할 수 있다. 하지만 정말정말 코딩 자체에 사소한 실수가 없다는 생각이 들때,.....
 
          '왜 생각한대로 작동안하는걸까?...이건 분명 플래시 프로그램 버그일거야....'

라는 생각이 들때가 있다.....하지만 컴퓨터는 거짓말을 하지 않는다. 분명 어떤 문제로 인해 생각한대로 작동하지 않을뿐이다.
이런 문제의 상당부분은 바로 플래시의 초기화 문제이다.(많은 경우가 이런 상황에 부딪힐수 있다는 의미) 즉 무비클립을 attach 하거나 컴포넌트(component) 를 사용했을경우.....특히 자주 발생하는 듯 싶다.

무비클립의 초기화 과정은 타임라인 이후에 일어난다. 따라서 제아무리 처리속도가 빠르다 하더라도 덩치가 큰 프로그램일경우 초기화하는  과정에 어느정도  딜레이가 발생하게 된다.
특히 웹에서 실행할경우 로딩을 고려하지 않고 제작할 경우 문제가 심각해진다.

또한 클래스로 제작할경우 즉 좀 복잡한 로직에 의해 구현되는 어플리케이션이나 사이트일경우
연결한 무비클립이나 컴포넌트와 같은 프레임 상에 클래스를 사용하여 코딩을 했을 경우 초기화 타임으로 인한 오류가 발생할수 있다는 것이다.

플래시에서 제공하는 컴포넌트는 특히 덩치가 더 커서 상대적으로 프레임에 나타났을때 인식하는 속도가 느리다.(사람이 체감하지 못하겠지만 컴퓨터처리속도는 아마도...)

따라서 컴포넌트를 사용할경우 그것에 해당하는 클래스의 처리순서를 똑 어느정도 딜레이를 주어 처리한다면 초기화 문제를 해결할수 있을 것이다. 1frame 정도 후에 처리한다면 초기화하고도 충분한(?) 시간.....^^


/*----------------------------------------------------------------------------------
  @description 프레임 딜레이 함수
  @param scope : Object, 실행할 함수의 스코프
  @param callback : Function, 콜백함수
  @param delayFrame : Number, 딜레이프레임
*---------------------------------------------------------------------------------/
  public static function frameDelay():Void{
    var obj = arguments.shift();
    var func = arguments.shift();
    var delayFrame=arguments.shift();
   var p:Array=arguments;
   
   var mc:MovieClip=_root.createEmptyMovieClip("frameDelay",_root.getNextHighestDepth());
   mc.onEnterFrame=function(){
    trace(delayFrame);
    delayFrame--;
    if(delayFrame<1){
     delete  this.onEnterFrame;
     func.apply(obj,p);
     this.removeMovieClip();
     }  
   }
  }


 
 
태그 : , ,
이 글의 관련글(트랙백) 주소 :: http://kimkijeung.com/trackback/40

Name 
Password 
Homepage 
  secret
Comment 
  글쓰기


[PREV] [1] ... [65][66][67][68][69][70][71][72][73] ... [105] [NEXT]

 
전체 (105)
flash (74)
math&physics (4)
programming (11)
Flex2 (1)
Mac (2)
photo (0)
project (6)
주저리주저리 (3)
유용한 자료들 (1)
diary (0)
Book (1)
web (2)
«   2009/01   »
        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 29 30 31