AS3: Использование цикла for / do со многими мувиклипами приводит к неявной ошибке приведения - PullRequest
0 голосов
/ 21 октября 2011

У меня постоянно работает следующая функция для проверки столкновения между контролируемым игроком шаром (mcBall) и несколькими стенами (метко названными mcWall1, mcWall2 и т. Д.): (Переменная numberofwalls получает свое значение в каждой отдельнойкадр, в котором имеется разное количество фрагментов ролика.)

function checkcollision(evt:Event) : void {
        for(var i = 1; i <= numberofwalls; i++){
            if (mcBall.hitTestObject("mcWall"+i) == true){
            killball()
            }
        }
    }
}

Однако, когда я делаю это, я получаю следующую ошибку при компиляции:

Сцена 1, Уровень «Действия», Кадр 1, Строка 89 1067: неявное приведение значения типа String к несвязанному типу flash.display: DisplayObject.

Строка 89 выглядит следующим образом:

if (mcBall.hitTestObject("mcWall"+i) == true){

Насколько я понимаю, этодобавить строку и int, но я не понимаю, почему он не просто добавляет целое число в конец строки (например, mcWall1, где i = 1).

Я не могу использовать ("mcWall "[i]), поскольку у меня нет настроенного массива, и я не думаю, что это необходимо для количества стен, которые я буду использовать. Каждой стене статически дается имя экземпляра на сцене, а не в моем коде.

Любое предложениеЧто я могу сделать, чтобы он протестировал mcWall (i)?

Заранее спасибо.

1 Ответ

0 голосов
/ 21 октября 2011

Это правда, что говорит компилятор. hiTestObject() функция получает DisplayObject в качестве аргумента, но вы передаете строку "mcWall"+i. Попробуйте:

if (mcBall.hitTestObject(this.getChildByName("mcWall"+i)) == true){
    killBall();
}
...