2013-05-19 3 views
0

AS3을 배우고 있으며이 유형의 오류와 관련하여 여러 가지 관련 질문이 있지만 이해가 안되는 것으로 알고 있습니다.AS3 상위 메소드 및 변수에 액세스하는 중 오류가 발생했습니다.

TypeError: Error #1034: Type coercion failed: cannot convert bej_cs5_fla::[email protected] in Board. 
at BoardTimer/gameOver() 
at BoardTimer/countdown() 
at flash.utils::Timer/_timerDispatch() 
at flash.utils::Timer/tick() 

내가 클래스에 있습니다

는이 오류를 받고 있어요. 클래스 Board 및 클래스 BoardTimer.

Board :

public class Board extends MovieClip { 
    //Attributes 
    public var boardSide:uint; 

    public function Board(dimention:uint) { 
       boardSide = dimention; 
     // Code goes here 
    } 
    } 

BoardTimer :

public class BoardTimer extends Board{ 

    public function BoardTimer(dimention:uint) 
    { 
     boardSide2 = dimention; 
     super(dimention); 
     gameTimerBox = new TextField(); 
     myTimer = new Timer(1000,count); 
     myTimer.addEventListener(TimerEvent.TIMER, countdown); 
     myTimer.start(); 
    } 
    } 

그리고 어떤 BoardTimer 방법 :

:

function countdown(event:TimerEvent):void 
    { 
     gameTimerBox.x = 700; 
     gameTimerBox.y = 200; 
     gameTimerBox.textColor = 0xFFFFFF; 
     gameTimerBox.text = String((count)-myTimer.currentCount); 
     if (gameTimerBox.text == "0") 
     { 
      gameOver(); 
      gameTimerBox.text = String("Game Over"); 
     } 
     addChild(gameTimerBox); 
    } 

    function gameOver() 
    { 
     trace(Board(parent).boardSide); 
    } 

한 프레임이 I이

다른의나는이 있습니다

var dimention:uint=10; 
var board_mc: Board = new Board(dimention); 
board_mc.x=25; 
board_mc.y=25; 
addChild(board_mc); 

BoardTimer하면 해당 Board가하고있는하지만 난 Board 메소드와 변수에 액세스하려면 실패하고있어 모두하고있다. , trace(Board(this.parent).boardSide);trace(Board(this.parent.parent).boardSide);과 아무 것도 시도하지 않았습니다.

내가 뭘 잘못하고 있니?

답변

1

parent은 기본 클래스 또는 파생 된 상위 클래스를 참조하지 않습니다. 스테이지의 디스플레이리스트에있는 부모를 나타냅니다. this

기본 클래스를 나타 내기 위해 super 키워드를 사용하십시오. 또한 클래스를 상속하는 경우 보호 된 모든 & 공용 메서드 & 변수는 파생 클래스에 그대로 사용 가능합니다.

+0

감사합니다. 그게 내 문제를 해결했다. – Favolas

관련 문제