2014-02-21 2 views
0

Я получаю вышеуказанную ошибку в этом коде, когда пытаюсь сделать бульдозер на сцене. Это сводит меня с ума, и я не знаю, почему это происходит. У меня есть клип бульдозера в моей библиотеке, и, похоже, он правильно определен. Любая помощь будет принята с благодарностью.Ошибка AS3 # 2007: параметр child должен быть не нулевым

import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.ui.Mouse; 

//START SCREEN 
var startScreen: MovieClip; 
var bulldozer: MovieClip; 

startClick.addEventListener(MouseEvent.CLICK, startGame); 


function startGame(event: MouseEvent): void { 
    startScreen.parent.removeChild(startScreen); 
    startClick.parent.removeChild(startClick); 
    addChild(bulldozer); 
    var enemyGenerator: Number = Math.random(); 
    if (enemyGenerator >= 0.8) { 
     bulldozer.x = stage.x = 150; 
     bulldozer.y = stage.y = 150; 
    } else if (enemyGenerator >= 0.6) { 
     bulldozer.x = stage.x = 250; 
     bulldozer.y = stage.y = 250; 
    } else if (enemyGenerator >= 0.4) { 
     bulldozer.x = stage.x = 350; 
     bulldozer.y = stage.y = 350; 
    } else if (enemyGenerator >= 0.2) { 
     bulldozer.x = stage.x = 400; 
     bulldozer.y = stage.y = 400; 
    } else { 
     bulldozer.x = stage.x = 450; 
     bulldozer.y = stage.y = 450; 
    } 

    startClick.removeEventListener(MouseEvent.CLICK, startGame); 
} 
+0

Кроме того: что startClick? Также: пожалуйста, напишите полные ошибки, когда ваш вопрос связан с ошибками. – FlavorScape

ответ

1

Вам необходимо создать экземпляр бульдозера!

var bulldozer: MovieClip = new MovieClip(); 

Приведенный выше код создаст переменную экземпляра класса, доступную из любой функции этого класса. Если вы скажете:

public var MovieClip = new MovieClip(); 

Тогда вы сможете получить к нему доступ из-за пределов этого класса. Промойте и повторите для startScreen.

Существует разница между null и не определено. Это базовая концепция любого языка OO. Ваш объект bulldozer (ребенок, которого вы пытаетесь добавить) на данный момент является нулевым, потому что он не был создан с новым. Если бы это было неопределенно, это означало бы, что var startScreen: MovieClip; отсутствовал.

Обратите внимание на конструкторы и переменные экземпляра.

+0

Хорошо, когда я заменил «var buldozer: MovieClip»; с «var buldozer: MovieClip = new MovieClip;», он по-прежнему не работает. startClick - это динамическая часть текста. Моя новая ошибка с заменой гласит: «Ошибка: ошибка # 2071: класс Stage не реализует это свойство или метод. при ошибке $/throwError() \t at flash.display :: Stage/set x() \t в PlanetEarthGame_fla :: MainTimeline/StartGame() " – user3335696

+0

Моя предыдущая ошибка чтения" TypeError: Error # 2007: Параметр ребенок должен быть ненулевым \t в flash.display :: DisplayObjectContainer/AddChild() \t в PlanetEarthGame_fla.: : MainTimeline/startGame() « – user3335696

+1

Новая ошибка возникает из строк типа' bulldozer.x = stage.x = 150; 'Вы пытаетесь установить свойство' x' 'stage', и это не допускается. – Marcela

0

У вас есть следующие проблемы:

Вам нужно создать экземпляр бульдозер, как указано выше FlavorScape.

Эта линия является определение бульдозер в качестве переменной, но эта переменная пуста, или «нулевой»:

var bulldozer: MovieClip; 

Вы не можете добавить пустую переменную на сцену, так что это приводит к ошибке (# 2007), если вы не создаете экземпляр так:

var bulldozer: MovieClip = new MovieClip(); 

Вторая ошибка (# 2071), является результатом того, чтобы пытаться установить х и у свойства стадии. Этап никогда не имеет свойств х или у, поэтому линии, как это:

bulldozer.x = stage.x = 150; 
bulldozer.y = stage.y = 150; 

должен быть

bulldozer.x = 150; 
bulldozer.y = 150; 
Смежные вопросы