depths값에 대해 질문드립니다..
티나
제상식으로는 이해가 안되서 이렇게 올립니다.
2프레임에
무비클립.swapDepths(100);
이렇게 뎁스값을 주고나서 play()를 통해 프레임이 이동되고 프레임끝에 도달하여 gotoAndPlay(2)를 통해 다시 2프레임으로 왔을때..
무비클립의 뎁스값이 -16383이 되어버립니다..
2프레임에 무비클립.swapDepths(100); 명령어가 있던 없던 상관없이 말이죠..
또한 nextFrame을 통한 프레임이동시에는 뎁스값이 살아있는데 prevFrame을 사용하면 죽어버립니다..이문제의 해결법또한 희한합니다..
1프레임에 변수를 하나 정의하고 var i=1;
2프레임에서
i++;
무비클립.swapDepths(100+i);
그리고 뎁스를 출력해보면 한바퀴돌때마다 1씩올라야 하는 뎁스값이 101로 고정됩니다.
왜이런지 아시는분.. 답변좀부탁합니다..-------------------------------------------
파일올렸습니다. (__);
-----------------------------------------
-
딥블루
음.. swapDepths(target:Object);
이렇게 나와있으니.. MovieClip이라기 보다.. Object 가 맞겠군요 -
솔로
swapDepths 요녀석이 MovieClip.swapDepths(MovieClip); 이거이기 때문아닌가요..
물론 숫자로도 뎁스가 변경되지만 숫자로 하면 처음에 초기화된 숫자로만 변경되며 더이상 변경되지 않습니다.
저 i와 mc하나를 만들어 swapDepths 해주고 저 mc와 바꾸고싶은 무비클립과 다시한번 swapDepths 를 해주면 원하시는 대로 i값 증가하면서 swapDepths 이 이루어집니다..
즉, 계속 바꾸고싶다면 mc 대 mc 로.. -
꽃달
수다님// 답변감사합니다~ 두번째 제시한부분에서 i값을 16383로 초기화하여 뎁스를0부터 시작하였더니 똑같은 현상이 발생.. 아이러니하네요.. 논리적인부분보단 꽁수를 통해 가동대는것만을 기대해야겠네요 *.*
mc가 딸랑 하나만 더생기는 현상은 왜일까 @.@ -
천칭자리
trace(\시작\);
//---만약이부분이 없다면 뎁스는 -xxx로 바뀝니다.
i++
a.swapDepths(a.getDepth()+i);
a._x = random(Stage.width);
trace(a.getDepth());
2번 프레임의 액션을 위에처럼 수정을 해 보세요.. -
텐시
일종의 버그인듯 싶네요.
두번째 프레임 액션을 trace(\시작\);
i++;
//---만약이부분이 없다면 뎁스는 -xxx로 바뀝니다.
_root.a.swapDepths(i);
a._x = random(Stage.width)
trace(\a= \+a);
trace(\a_type= \+typeof (a));
trace(\i= \+i);
이 소스를 붙여 넣으시면 하나의 mc가 더 생성이 되 버립니다.
swapDepths를 쓰면 나타나는 현상입니다. -
알찬해
이기수다님// 제목바꿨습니다 이상했다면 죄송합니다(__)
수다님// 1프레임에서 var i=1이 정의되어있고 루프는 2~10까지 돌게됩니다.. 즉 초기화는한번이죠.. 디버그해보면 i는 증가하고있습니다.. 뎁스값만 그대로져..
andwhy님//테스트해보고 다시올리겠습니다...
모든분들 답변 감사합니다~^^ -
글리슨
첫번째문제는....스왑뎁스라는게....말그대로 뎁스를 바꿔주는겁니다...뎁스를 설정해주는게 아니구요....
만일 처음 무비클립의 뎁스가 1 이였다면 처음 실행으로 100 이 되겠죠...그리고 다음번에 플레이 될때...다시 100으로 설정되어야 하는데....제가 보기엔 이때 무비클립이 처음 그 무비클립이 아닌 undefined로 되어있을듯합니다...그래서 100뎁스에 있던 무비클립를 언디파인드 영역??으로 바꿔치기를 해버린듯...
한번 무비클립.swapD -
이솔
질문 글 제목을 바꾸시면 좋겠네요
-
연연두
1프레임에서 var i=1 이라 지정해 놓고 마지막 프레임에 i++이라 써주시고.. 그 밑에 gotoAndPlay(2)라고 주면.. 계속 + 될꺼 같네요 ^^
-
중독적
101이 되었을때 102가 되어야 되는데.. 다시 해당 프레임으로 가서.. var i=1 이란 변수에 의해서 초기화 되기 떄문입니다..