2014-04-18 2 views
0

게임에서 버튼을 클릭하면 as3의 그래픽을 사용하여 도형을 그립니다. 원 및 직사각형과 같은 간단한 모양.클래스 내부에서 그래픽을 제거하십시오 as3

내 수업 중에 무언가가 일어 났을 때 그려진 그래픽을 삭제하고 싶습니다.

기본적으로 hitTestObject (괜찮습니다)가있는 경우 스테이지의 모든 그래픽을 지우고 싶습니다.

if (gb2.hitTestObject(h1s2)) 
      { 
       trace ("holed") 
       ySpeed2=0; 
       xSpeed2=0; 
       this.visible=false; 


       var mcSplash:MovieClip =parent.getChildByName("mcSplash") as MovieClip; 
       mcSplash.visible=true; 
       //parent.drawings.graphics.clear(); 
      } 

내 시도는 parent.drawings.graphics.clear(); 이 오류가 발생했습니다 :

라인 481 1119 : 정적 유형 flash.display : DisplayObjectContainer를 사용하여 참조를 통해 가능한 정의되지 않은 속성 도면에 액세스 할 수 있습니다. 이것이

방법, 최소 타임 라인에 도면이 발생합니다

누구나 어떤 제안

UPDATE 있습니다.

var drawings:Shape = new Shape; 

for (i=0; i<numRecs; i++) 


{ 

    recStartX = Number(xmlContent.rec[i][email protected]); 

    recStartY = Number(xmlContent.rec[i][email protected]); 

    recWidth = Number(xmlContent.rec[i][email protected]); 

    recHeight = Number(xmlContent.rec[i][email protected]); 

    fillColor=int(xmlContent.rec[i].look.fillhex); 

    lineThick = Number(xmlContent.rec[i].look.strokethick); 

    lineColor = int(xmlContent.rec[i].look.strokehex); 

    drawings.graphics.lineStyle(lineThick, lineColor); 

    drawings.graphics.beginFill(fillColor); 

    drawings.graphics.drawRect(recStartX,recStartY,recWidth,recHeight); 

    drawings.graphics.endFill(); 

} 
+0

내 초기 추측이다 '드로잉 '은 부모에 존재하지 않습니다. 응용 프로그램을 디버깅하여 '부모'가 실제로 참조하고있는 내용과 '도면'의 부모인지 여부를 확인하십시오. – Marcela

+0

위의 편집을 확인하십시오. – user3450141

답변

0

각 모양/rect를 만들고 배열을 만듭니다. 다음이 반복 제거 ..

for(var iteration:int = 0; iteration < rectArray.length; iteration++) 
    this.removeChild(rectArray[iteration]); 

또는 당신이 클래스에서이 호출하는 경우, 희망이 도움이 :) Z입니다

MovieClip(this.root).removeChild(rectArray[iteration]); 

를 사용

0

무엇이 drawings입니까? mcSplash에서 그릴 경우 mcSplash.graphics.clear()을 사용해야합니다. drawings이라는 자식을 그릴 경우 먼저 자식으로 가져와야합니다 (mcSplash get 후) : var drawings = mcSplash.getChildByName('drawings); drawings.graphics.clear();. 당신은 수표를 쓸 수 있습니다 : if (mcSlpash) { if (drawings) {, 등

+0

도면은 새로운 모양을 그리는 기본 타임 라인 코드의 변수입니다. - var drawings : Shape = new Shape(); – user3450141

+0

위의 편집을 확인하십시오 죄송합니다. – user3450141

+0

이 코드가 실행되는 위치를 지정하지 않았으므로 'parent'가 무엇인지 모르기 때문에 아직 충분하지 않습니다. 'mcSplash'가 발견되면'drawing'은'mcSplash'와 같은 __at이어야합니다. 그렇지 않으면 찾을 수 없습니다. 중단 점을 사용할 수 없다면'trace (child)'를 사용하십시오. –