2014-02-05 4 views
0

중간에 떨어지는 물체가있는 게임을 만들려고합니다. 좋지 않거나 좋으면 왼쪽으로 드래그해야합니다.오류 # 1006 : removeChild는 함수가 아닙니다.

지금 당장 문제가되는 것은 프로그램이 객체의 상태가 좋은지 나쁜지를 어떻게 알지 못한다는 것입니다. 나는 생각한다.

오류가 발생합니다. 오류 # 1006 : removeChild가 기능이 아닙니다.

나는 초보자입니다. 팁이나 다른 것이 있으면 공유하십시오!

http://pastebin.com/AnpN6tEy import flash.events.Event; 라인 37

var tray:Array = new Array(Legal2_1,Legal2_2,Legal2_3,Legal2_4,Legal2_5,Legal2_6,Legal2_7,Legal2_8,Legal2_9,Legal2_10,Legal2_11,Legal2_12,Legal2_13,Legal2_14,Legal2_15,Illegal2_1,Illegal2_2,Illegal2_3,Illegal2_4,Illegal2_5,Illegal2_6,Illegal2_7,Illegal2_8,Illegal2_9,Illegal2_10,Illegal2_11,Illegal2_12,Illegal2_13,Illegal2_14,Illegal2_15); 
var traypos:int; 
var goodpos:int; 
var badpos:int; 

traypos = (stage.stageWidth/2)-100; 
goodpos = ((stage.stageWidth/3) -100); 
badpos = (((stage.stageWidth/3) *2) -100); 

var timerT:Timer = new Timer(1000,120); 
timerT.addEventListener(TimerEvent.TIMER, traytimerhandler); 
timerT.start(); 

var secondsT:Number = 1; 

function traytimerhandler(event:TimerEvent) 
{ 
//trace("Seconds elapsed: " + seconds); 
    SpawnTray(null); 
    secondsT++; 
} 

function SpawnTray(event:Event):void 
{ 
    var trayspawn:int; 
    trayspawn = int(Math.random() * tray.length); 

    var trayn:MovieClip = new tray[trayspawn](); 

    addChild(trayn); 

    trayn.x = traypos; 
    trayn.y = -20; 

    trayn.addEventListener(Event.ENTER_FRAME, MoveTray(trayspawn)); 
    trayn.addEventListener(MouseEvent.MOUSE_DOWN, startDragging); 
//trayn.addEventListener(MouseEvent.CLICK, CheckTray(trayspawn)); 
} 

function MoveTray(trayc:int):Function 
{ 
    return function(event:Event):void { 
    var trayn:DisplayObject = event.target as DisplayObject; 
    trayn.y += 5; 
    if (trayn.y >= stage.stageHeight + 50) 
    { 
     CheckTray(trayc); 
     trayn.removeEventListener(Event.ENTER_FRAME, MoveTray); 
     this.removeChild(trayn); 
    } 
    } 
} 

function startDragging(e:MouseEvent):void 
{ 
    e.target.removeEventListener(MouseEvent.MOUSE_DOWN, startDragging); 
    e.target.removeEventListener(Event.ENTER_FRAME, MoveTray); 
// surprise! This object will not be moved via MOUSE_DOWN,; 
// because it's already being moved 
    // e.target.addEventListener(
    e.target.addEventListener(MouseEvent.MOUSE_UP, stopDragging); 
    e.target.startDrag(); 
} 
// drag; 


function stopDragging(e:MouseEvent):void 
{ 
    e.target.stopDrag(); 
    e.target.addEventListener(Event.ENTER_FRAME, MoveTray); 
    e.target.addEventListener(MouseEvent.MOUSE_DOWN, startDragging); 
    e.target.removeEventListener(MouseEvent.MOUSE_UP,stopDragging); 
    return;// emergency exit. We don't need to do more 
} 

function CheckTray(trayspawn:int):Function 
{ 
    return function(event:Event):void { 
    var trayn:DisplayObject = event.target as DisplayObject; 
    if (trayn.x <= goodpos) 
    { 
    //good side 
     if (trayspawn<=14) 
     { 
      score += 15; 
     } 
     else 
     { 
      score -= 15; 
     } 
    } 
    if (trayn.x >= badpos) 
    { 
     //bad side 
     if (trayspawn<=14) 
     { 
      score -= 15; 
     } 
     else 
     { 
      score += 15; 
     } 
    } 

    if (trayn.x > goodpos && trayn.x < badpos) 
    { 
     //middle 
     score -= 15; 

    } 
    } 
} 

답변

0

암시 강제 오차 addEventListener 기능을 기대한다는 사실에 의해 야기된다. 행을 다음으로 변경하십시오.

trayn.addEventListener(Event.ENTER_FRAME, MoveTray); 

"정의되지 않은 등록 정보 이벤트"문제점에 공통 원인이 있습니다. 이벤트 인수가 함수의 서명에 없습니다. 그들은 다음과 같아야합니다 :

function MoveTray(event:Event):void 

function CheckTray(event:Event):void 
+0

당신에게 도움이 될하지만 내 생각은 .. 함수에 값을 전달해야합니다. 다른 방법이없는 한. –

+0

어떤 종류의 값을 전달해야합니까? –

+0

코드를 업데이트했습니다! 나는 이제 다른 오류가 발생했습니다! 확인해주십시오. 고마워요, 미안 해요! –

0

이벤트를 대상으로하는 이벤트를 대상으로 액세스 할 수 있습니다.

예 :

var m1:MovieClip = new MovieClip(); 
m1.name = 'm1'; 
m1.addEventListener(Event.ENTER_FRAME, onEnterFrame); 

var m2:MovieClip = new MovieClip(); 
m2.name = 'm2'; 
m2.addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void 
{ 
    trace('onEnterFrame', e.target.name); // you could see m1 and m2 
} 

희망이

+0

30 개 항목이 있다고 가정하면 Uhmmmm은 문제가되지 않습니까? 더 쉬운 방법이 있습니까? 제 코드를 확인해 주시겠습니까? 나는 그것을 편집했다. –

관련 문제