as3 ошибка загрузки "хорошего" "плохого" массива - PullRequest
0 голосов
/ 09 марта 2012

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

// Создание и установка хороших / плохих случайных объектов Word

public function newObject(e:Event) 
    {
        var goodObjects:Array = ["WordObject1"];
        var badObjects:Array = ["WordObject2"];
        if (Math.random() < .5) 
        {
            var r:int = Math.floor(Math.random()*goodObjects.length);
            var classRef:Class = getDefinitionByName(goodObjects[r]) as Class;
            var newObject:MovieClip = new classRef(); 
            newObject.typestr = "good";
        } else 
        {
            r = Math.floor(Math.random()*badObjects.length);
            classRef = getDefinitionByName(badObjects[r]) as Class;
            newObject = new classRef(); 
            newObject.typestr = "bad";
        }
        newObject.x = Math.random();
        newObject.y = Math.random();
        addChild(newObject);
        objects.push(newObject);
        placeWords();
    }
    // create random Word objects 
    public function placeWords() {
        objects = new Array();
        for(var i:int=0;i<numWordObjects;i++) {

            // loop forever
            while (true) {

                // random location
                var x:Number = Math.floor(Math.random()*mapRect.width)+mapRect.x;
                var y:Number = Math.floor(Math.random()*mapRect.height)+mapRect.y;

                // check all blocks to see if it is over any
                var isOnBlock:Boolean = false;
                for(var j:int=0;j<blocks.length;j++) {
                    if (blocks[j].hitTestPoint(x+gamesprite.x,y+gamesprite.y)) {
                        isOnBlock = true;
                        break;
                    }
                }

                // not over any, so use location
                if (!isOnBlock) {
                    newObject.x = x;
                    newObject.y = y;
                    newObject.gotoAndStop(Math.floor(Math.random()*1)+1);
                    gamesprite.addChild(newObject);
                    objects.splice(newObject);
                    break;
                }
            }
        }
    }

я получаю следующие ошибки:

1119: доступ к возможно неопределенному свойству x через ссылку со статическим типом Function.
1119: Доступ к возможно неопределенному свойству y через ссылку со статическим типом Function. 1067: неявное приведение значения типа Function к несвязанному типу flash.display: DisplayObject.

1 Ответ

0 голосов
/ 09 марта 2012

Попробуйте переименовать var x и var y в другое. Это публичные свойства в любом классе, который расширяется как экранный объект (Sprite / MovieClip / Shape).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...