액션스크립트의 스테이지에서 비트맵을 어떻게 참조합니까?

StackOverflow https://stackoverflow.com/questions/43354

  •  09-06-2019
  •  | 
  •  

문제

ActionScript 3을 사용하여 플래시의 스테이지에서 비트맵을 어떻게 참조합니까?

플래시의 무대에 비트맵이 있는데 영화가 끝날 때 영화가 반복되기 전에 시퀀스의 다음 비트맵으로 교체하고 싶습니다.내 라이브러리에는 클래스 이름이 img1/img2/img3인 액션스크립트용으로 내보낸 3개의 이미지가 있습니다.플래시의 레이어가 설정되는 방법은 다음과 같습니다.

layer 5 : mask2:MovieClip
layer 4 : img2:Bitmap
layer 3 : mask1:MovieClip
layer 2 : img1:Bitmap
layer 1 : background:Bitmap

영화가 끝나면 img1을 img2로 바꾸고 싶습니다. 그러면 영화가 원활하게 반복됩니다. 그런 다음 이상적으로는 이미지가 끝날 때까지 img2(레이어 4)를 img3로 바꾸는 식으로 계속합니다.

하지만 디자인 타임에 이미 무대에 올려진 이미지를 참조하는 방법을 찾을 수 없습니다. 이를 수행하는 방법에 대해 아는 사람이 있습니까?

최종 영화에서는 웹 서버에서 이미지를 동적으로 로드하고(이 비트에 대한 코드가 있음) img1/img2/img3과 함께 이미지를 표시할 것입니다.

어떤 도움이라도 주시면 감사하겠습니다.

편집하다:

@81 야생마 , 이것을 시도했지만 그래픽의 경우 인스턴스 이름이 회색으로 표시되어 영화 클립과 버튼으로만 수행할 수 있습니다.나는 그것들을 moveclip으로 바꾸고 새로운 이미지를 추가하기 전에 moveclip의 이미지를 지워서 작동하게 만들었습니다. (더 간단한 것을 사용하여) 반혼RF 제안), 그러나 이상한 이유로 내가 지운 이미지에서 마스크가 작동하면 마스크 애니메이션을 위해 다시 돌아옵니다.

도움이 되었습니까?

해결책

스테이지에서 무언가를 참조하려면 스테이지 인스턴스에 이름을 지정해야 합니다. 라이브러리의 기호에 클래스 이름을 지정하는 것이 아닙니다.

스테이지에서 항목을 클릭하고 속성 패널을 살펴보세요.항목의 크기에 대한 입력 상자 바로 위에 텍스트 입력 상자가 있어야 합니다.거기에 이름을 입력하세요.

코드의 다른 곳에서 인스턴스 이름으로 스테이지의 해당 항목을 참조할 수 있습니다.

다른 팁

다음과 같아야 합니다.

imageHolder.removeChild( imageIndex )

또는

imageHolder.removeChildByName( imageName )

그리고 나서

imageHolder.addChild( newImage )

나는 아마도 당신의 문서 클래스에서 이런 일을 할 것입니다

for(var i:int=0; i<numChildren; i++){
    trace(getChildAt(i),"This is the child at position "+i);
}

내가 이렇게 하는 이유는 여전히 플래시 IDE에서 코딩하고 디버거가 작업을 수행하는 데 너무 고통스럽기 때문입니다. 변수를 추적하는 것이 더 쉽기 때문에 해당 for 루프를 사용하여 현재 항목의 개체 이름을 인쇄할 수 있습니다. 무대에서 또는 디버거 프로그램을 사용하여 개체를 찾을 수도 있습니다.

이제 자식이 있고 스테이지 내에서 자식이 실제로 있는 인덱스가 있으므로 getChildAt(int)를 호출하여 자식을 참조할 수 있고, 제거ChildAt(int), addChildAt(displayObject, int) 및 swapChildrenAt(int, int)할 수 있습니다. ).이러한 인수의 int는 추적 문에서 반환된 인덱스 위치를 나타내고, displayObject는 분명히 스테이지 또는 상위 DisplayObject에 추가하려는 모든 항목을 나타냅니다.

이 4가지 명령을 사용하면 무대에 있는 영화 클립을 자유롭게 재정렬하여 원활하게 전환되는 것처럼 보일 수 있습니다.

@81bronco One은 무대에 항목이 많을 경우 혼란을 피하기 위해 구체적으로 고유하게 참조하려는 경우 무대에서 자산의 이름을 확실히 지정해야 합니다.

안녕하세요 Re0sless, 스테이지에서 해당 항목을 제거하면 해당 항목에 이벤트 리스너, 타이머 또는 로더가 연결되어 있습니까?이러한 요인으로 인해 플래시 메모리에 개체가 달라붙어 제대로 제거되지 않을 수 있습니다.또한 항목을 제거하는 것 외에도 null을 시도해 볼 수도 있습니다.때로는 참조를 삭제하여 적절하게 파기할 수 있도록 하는 데 도움이 됩니다.

물론 한 인스턴스에서 항목을 제거해도 이후 프레임에서도 항목이 제거되지 않는 것처럼 어리석은 일이 될 수도 있지만 실제로는 그렇지 않다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top