Я пытаюсь сделать так, чтобы множество одинаковых объектов появлялось на экране случайным образом в зависимости от условий и постоянно получаю ошибки? - PullRequest
1 голос
/ 18 апреля 2010

Хороший друг рекомендовал мне этот сайт, он выглядит действительно полезным! Я немного постыдный новичок на ActionScript, и после 3 дней обучения и советов я попал в кирпичную стену.

Мне удалось подключить датчик к arduino, который разговаривает со вспышкой, используя нечто, называемое AS3glue. это работает, когда я устанавливаю трассу («лист») для контура, который датчик читает 0, я получаю распечатку слова «лист». однако я хочу, чтобы при выполнении этого условия программа отображала изображение на экране, а не просто что-то отслеживала.

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

Вот фрагмент кода, который вызывает у меня проблемы:

вар армии: массив; вар враг: враг;
function AvoiderGame () {Army = новый массив (); var newEnemy = new Враг (100, 100); army.push ( newEnemy); addChild (newEnemy); }

функция timerEvent (событие: событие): пусто {

if (a.getAnalogData (0) == 0 && a.getAnalogData (0)! = this.lastposition) {

          trace("leaf");
          var randomX:Number = (Math.random() * 200) + 100;
          var randomY:Number = (Math.random() * 150) + 50;
          var newEnemy = new Enemy( randomX, randomY);
          army.push( newEnemy );
          addChild( newEnemy );
       } else if (a.getAnalogData(0) == 0) {   //don't trace anything } >else {

// ничего не отслеживать this.lastposition = a.getAnalogData (0); // потом устанавливаем положение, чтобы быть новым последняя позиция и повтор.

}

Я импортировал "импорт flash.display.MovieClip; "

и код для класса Enemy выглядит как это:

пакет {импорт flash.display.MovieClip; общественный класс Враг расширяет мувиклип функция Enemy (startX: номер, startY: Number) {x = startX; y = startY; } }}

Вот моя ошибка. Я пробовал поискать в Google, похоже, это довольно общая ошибка:

TypeError: Ошибка № 1009: невозможно получить доступ свойство или метод нулевого объекта ссылка. в as3glue_program_fla :: MainTimeline / TimerEvent () в flash.utils :: Timer / _timerDispatch () на flash.utils :: Таймер / тик ()

Я убедился, что объект "Враг" экспортирован для AS3.

Я собираюсь сделать что-то подобное, когда это запрограммировано в AS2:

leafCounter = 0; // установить счетчик на 0 counter.swapDepths (1000); // помещает счетчик сверху в значительной степени ничего, если вы не делаете больше, чем 1000 листьев! counter.textbox.text = 0; // показывает "0" в текстовом поле в видеоклип "counter"

this.onMouseDown = function () { // срабатывает при нажатии мыши this.attachMovie ( "лист", "лист" + leafCounter, leafCounter, {_ х: Math.random () * Stage.width, _y: Math.random () * Stage.height, _rotation: Math.random () * 360 }); // добавляет лист на сцену с случайное положение и случайное вращение leafCounter ++; // добавляет 1 к листу counter counter.textbox.text = leafCounter; // показывает это число в текстовое поле}

Я уверен, что это должна быть простая ошибка, я могу заставить логику работать, когда она просто отслеживает что-то на экране, но я не могу заставить ее генерировать "врага"

Любая помощь или советы будут действительно полезны! Я знаю, что это немного нелепая работа по изменению существующего кода.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2010

По какой-то причине вынимают строку Army.push (newEnemy); делает эту работу отлично! : D

0 голосов
/ 18 апреля 2010

хорошо, ошибка, которую вы выдаете, означает, что что-то не существует, когда вы думаете, что это должно. На данный момент лучшим кандидатом является последняя позиция, хотя вы могли бы сделать это раньше. Закомментируйте каждый глобальный вариант, пока он не сработает. Похоже, вы проверяете, что a.input равен 0, но не lastposition, а затем вы устанавливаете lastposition как a.input (который должен быть 0), чтобы это тоже проверить.

...