Actionscript - функция не является допустимым типом - PullRequest
0 голосов
/ 05 мая 2011

Вчера кто-то здесь помогал мне с моей проблемой.Я принял ответ до того, как проверил его, и столкнулся с проблемой.

Что я делаю, так это то, что у меня есть самолет MC и ящик MC.Самолет летит вдоль оси Y, и я пытался заставить контейнер упасть куда-нибудь случайно вдоль пути самолета.Самолет продолжает сбрасывать ящики в каждой точке по оси Y.

Код, который я использую для перемещения тарелки / опускания ящика:

function makePlane():void
{
    var chance:Number = Math.floor(Math.random() * 60);
    if (chance <= 1)
    {
        trace(chance);

        var tempPlane:MovieClip;
        //Make sure a Library item linkage is set to Plane...
        tempPlane = new Airplane();
        tempPlane.planeSpeed = 10;
        tempPlane.x = Math.round(Math.random() * 1000);
        tempPlane.y = Math.round(Math.random() * -1000);
        addChild(tempPlane);
        trace("Made Plane!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        planes.push(tempPlane);
    }
}

function movePlane():void
{

    var tempX:Number;
    var tempCrate:MovieClip;
    var tempPlane:MovieClip;

    for (var j:int =planes.length-1; j>=0; j--)
    {
        tempPlane = planes[j];
        tempPlane.y +=  tempPlane.planeSpeed;
        tempCrate = new Crate();
        tempCrate.y = tempPlane.y;
        tempCrate.x = tempPlane.x;
        addChild(tempCrate);
        crates.push(tempCrate);
    }
}

Код, который мне далиУронить только 1 ящик вместо многочисленных ящиков:

  function addRandomCreation():void{
    var animationTime:Number = 5000; //The time the planes will be animating in ms 

    for(var i:int = 0; i < planes.length; i++){
        var planeTimer:Timer = new Timer(Math.round(animationTime * Math.random()));
        planeTimer.addEventListener(TimerEvent.TIMER, timerComplete(i));
        planeTimer.start();
    }
}

function timerComplete(planeID:int):function{
    return function(event:TimerEvent):void{
        event.target.stop();
        event.target.removeEventListener(event.type, arguments.callee);

        var tempCrate:MovieClip = new Crate();
        tempY = Math.round(Math.random() * planes[planeID].y);
        tempCrate.y = tempY;
        tempCrate.x = planes[planeID].x;
        addChild(tempCrate);        
    }
}

Когда я пытаюсь использовать этот код, я получаю ошибку «функция не является типом».Я никогда не видел функцию, используемую в качестве возвращаемого типа раньше.Кто-нибудь может мне помочь?

1 Ответ

2 голосов
/ 05 мая 2011

Тип возвращаемого значения function должен быть заглавным: Function.Функция timerComplete блокирует planeID в замыкании, чтобы он был доступен из обработчика событий (функция, возвращенная из timerComplete).

...