Actionscript 3 错误#1006:removeChild不是函数

Actionscript 3 错误#1006:removeChild不是函数,actionscript-3,flash,Actionscript 3,Flash,所以我试图创建一个游戏,在这个游戏中有一个物体从中间掉下来,如果它是好的,你必须从左边拖动它,如果它是坏的,你必须从右边拖动它 我现在遇到的问题是,我不知道程序如何知道对象是好是坏。我想 我得到一个错误: 错误#1006:removeChild不是函数 我是flash的新手,如果你有什么建议,请分享 导入flash.events.Event var tray:Array = new Array(Legal2_1,Legal2_2,Legal2_3,Legal2_4,Legal2_5,Legal

所以我试图创建一个游戏,在这个游戏中有一个物体从中间掉下来,如果它是好的,你必须从左边拖动它,如果它是坏的,你必须从右边拖动它

我现在遇到的问题是,我不知道程序如何知道对象是好是坏。我想

我得到一个错误: 错误#1006:removeChild不是函数

我是flash的新手,如果你有什么建议,请分享

导入flash.events.Event

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;

    }
    }
}
[代码>var托盘:阵列=新阵列(法律21、法律22、法律22、法律23、法律24、法律24、法律25、法律26、法律26、法律27、法律27、法律28、法律28、法律28、法律21、法律221、法律24、法律24、法律25、法律25、法律2、法律2、法律26、法律2、法律2、法律7、法律2、法律2、法律7、法律2、法律2、法律2、法律8、法律2、法律2、法律2、法律8、法律2、法律2、法律2、法律2、法律8、法律2、法律2、法律2、法律2、法律2、法律2、法律8、法律2、法律2、法律2、法律8、法律2、法律2、法律2、法律8、法律2、法律2、法律2、法律2、法律2、U 11、非法2 U 12、非法2 U 13、非法2 U 14、非法2 U 15); var-traypos:int; var-goodpos:int; var-badpos:int; traypos=(stage.stageWidth/2)-100; goodpos=((stage.stageWidth/3)-100); badpos=((舞台宽度/3)*2)-100); var timerT:定时器=新定时器(1000120); timerT.addEventListener(TimerEvent.TIMER,traytimerhandler); timerT.start(); var secondsT:编号=1; 函数TrayTimeHandler(事件:TimerEvent) { //跟踪(“经过的秒数:+秒); 产卵盘(空); secondsT++; } 函数产卵盘(事件:事件):无效 { var trayspawn:int; trayspawn=int(Math.random()*tray.length); var-trayn:MovieClip=新托盘[trayspawn](); 艾德奇尔德(特林); trayn.x=traypos; trayn.y=-20; trayn.addEventListener(Event.ENTER_FRAME,MoveTray(trayspawn)); trayn.addEventListener(MouseEvent.MOUSE_DOWN,startDraging); //trayn.addEventListener(MouseEvent.CLICK,CheckTray(trayspawn)); } 函数移动托盘(trayc:int):函数 { 返回函数(事件:事件):无效{ var trayn:DisplayObject=event.target作为DisplayObject; trayn.y+=5; 如果(trayn.y>=stage.stageHeight+50) { 检查盘(trayc); trayn.removeEventListener(Event.ENTER_FRAME,MoveTray); 这是雷莫维奇(特拉恩); } } } 功能启动触发(e:MouseeEvent):无效 { e、 target.removeEventListener(MouseEvent.MOUSE_向下,开始拖动); e、 target.removeEventListener(Event.ENTER_FRAME,MoveTray); //惊讶!此对象不会通过鼠标向下移动,; //因为它已经被移动了 //e.target.addEventListener( e、 target.addEventListener(MouseEvent.MOUSE_UP,停止拖动); e、 target.startDrag(); } //阻力; 函数停止拖动(e:MouseEvent):无效 { e、 target.stopDrag(); e、 target.addEventListener(Event.ENTER_FRAME,MoveTray); e、 target.addEventListener(MouseEvent.MOUSE_DOWN,startDraging); e、 target.removeEventListener(MouseEvent.MOUSE_UP,停止拖动); return;//紧急出口。我们不需要做更多 } 功能检查盘(trayspawn:int):功能 { 返回函数(事件:事件):无效{ var trayn:DisplayObject=event.target作为DisplayObject;
如果第37行的(trayn.x隐式强制错误是由
addEventListener
期望函数引起的。请将该行更改为:

trayn.addEventListener(Event.ENTER_FRAME, MoveTray);
“Undefined property event”问题有共同的原因。函数签名中缺少事件参数。它们应该是这样的:

function MoveTray(event:Event):void

function CheckTray(event:Event):void

您可以使用事件的属性目标访问正在调度事件的对象

例:


希望这可以帮助您

但我需要在函数中传递值。我想。除非有其他方法。您需要传递什么类型的值?我已更新了代码!我现在有不同的错误!请检查。谢谢,抱歉!仅用removeChild替换此.removeChild。看起来这是指向计时器实例。错误#2025:提供的DisplayObject必须是调用方的子对象。嗯,如果假设我有30个项目,那不是很麻烦吗?有没有更简单的方法?你能检查一下我的代码吗?我已经编辑过了。
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
}