문제

Flex 3에서 SWC 파일을 통해 사용자 정의 UICOCOMONT에 액세스하고 있습니다.이 구성 요소는 Flash CS3에서 OK 작동하지만 Flex에서 사용하면 Draw ()에서 이상한 오류가 발생합니다.

Sprite (AddChild 포함)와 LIB 경로에 SWC 구성 요소를 추가했습니다.

TypeError : 오류 #1010 : 용어가 정의되지 않았으며 속성이 없습니다.

at com.xxxx.highscores::HighScores/draw()

at fl.core::UIComponent/callLaterDispatcher()

이 UI 구성 요소의 Draw () 함수는 다음과 같습니다.

보호 된 함수 draw () : void {isinitializing = false;

     page.Text.x = width / 2;
     page.Text.y = height / 2;

     drawBackground();

}

도움이 되었습니까?

해결책

해당 코드 만 있으면 페이지 중 하나 또는 Page.Text가 NULL이어야합니다.

이름으로 이동하면 페이지가 당신이 만든 플래시 라이브러리 객체 인 것 같아요? 그렇다면, 이전 오류가 생성되기 전에 발사되어 플레이어가 발사되고 있다고 생각합니다 (디버거가 아직 첨부되지 않은 경우 발생하거나 공유 라이브러리를로드하는 데 문제가 발생할 수 있습니다). 디스플레이 목록에 추가 될 때까지 새 디스플레이 객체에 대해 '스테이지'가 설정되지 않습니다.

편집 : 구성 요소의 버그입니다. draw() 항상 사용합니다 highScoresModuleText 페이지의 속성 : 페이지가 HighScoresTextPage, 다른 페이지는 아닙니다. HighScoresTablePage, 어느 showHighsSores() 설정합니다. 이것은 아마도 객체가 무대에 있거나 최소한 이전에 만들어지기 때문에 플래시에서 작동합니다. showHighScores() 그렇게 불립니다 draw() 먼저 호출되고 구성 요소가 무효화되지 않기 때문에 호출되지 않습니다.

이 경우 올바른 방법은 show*() 그러면 몇 가지 속성을 설정하십시오 invalidate() 가지고 있습니다 draw() 나중에 알아 내지 만 빠른 수정은 그냥 추가하는 것입니다.if (page.highScoresModuleText)'불쾌한 선 주위 draw(). 더 빠른 수정은 만들어내는 것입니다 addChild() 조기 (스타트 업과 같은) 구성 요소 및 호출 showHighScores() 훨씬 나중에.

이것은 나를 위해 작동합니다 :

package
{
    import flash.display.Sprite;
    import com.novelgames.flashgames.highscores.HighScores;
    import flash.events.MouseEvent;

    public class As3_scratch extends Sprite
    {
        private var highscore : HighScores;

        public function As3_scratch()
        {
            highscore = new HighScores();
            addChild(highscore);
            stage.addEventListener(MouseEvent.CLICK, onClick);
        }

        private function onClick(event : MouseEvent) : void
        {
            highscore.showEnterHighScore(50);
        }
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top