помогите, никак не могу найти причину проблемы, пишет что
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at package_cl::gl_ship_cl/fn_stage_x_y_ship()
at package_cl::gl_ship_cl/fn_control_ship()
если из класс main удалить, то всё control_bullet = new Control_bullet_cl (gl_ship) нормально, а если оставить, то кораблик перестаёт двигаться и лезет эта ошибка

Код AS3:
package {
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.events.Event;
import flash.display.MovieClip;
import package_cl.str_daub_cl;
import package_cl.gl_ship_cl;
import package_cl.bullet_cl;
import package_cl.vector_bullet_cl;
import package_cl.Control_bullet_cl;
public class main extends MovieClip {
public var str_daub: str_daub_cl = new str_daub_cl();
private var gl_ship: gl_ship_cl;
public var bullet: bullet_cl = new bullet_cl();
public var vector_bullet: vector_bullet_cl = new vector_bullet_cl();
private var control_bullet: Control_bullet_cl;
public function main() {
this.addChild(str_daub);
str_daub.str_daub_Array[3].addEventListener(MouseEvent.CLICK, fn_click_btn);
}
public function fn_click_btn(e: MouseEvent): void {
str_daub.str_daub_Array[3].removeEventListener(MouseEvent.CLICK, fn_click_btn);
this.removeChild(str_daub);
gl_ship = new gl_ship_cl();
this.addChild(gl_ship);
control_bullet = new Control_bullet_cl (gl_ship); //вот от этой строки проблемы
stage.focus = stage;
}
}
}

Код AS3:
package package_cl {
import flash.events.KeyboardEvent;
import package_cl.gl_ship_cl;
import package_cl.vector_bullet_cl;
import flash.display.Sprite;
public class Control_bullet_cl extends Sprite{
private var vr_bullet: vector_bullet_cl = new vector_bullet_cl();
private var gl_ship: gl_ship_cl = new gl_ship_cl();
public function Control_bullet_cl(gl_ship) {
// constructor code
stage.addEventListener(KeyboardEvent.KEY_DOWN, fn_fire_down);
stage.addEventListener(KeyboardEvent.KEY_UP, fn_fire_up);
}
private function fn_fire_down(): void {
}
private function fn_fire_up(): void {
}
}
}

Код AS3:
package package_cl {
import flash.display.Sprite;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.events.Event;
import flash.geom.Point;
import package_cl.global_variable_cl;
import package_cl.vector_bullet_cl;
import package_cl.bullet_cl;
public class gl_ship_cl extends gl_ship_mc {
private var upPressed: Boolean = false;
private var leftPressed: Boolean = false;
private var rightPressed: Boolean = false;
private var gl_variable: global_variable_cl;
private var ver_bullet: vector_bullet_cl;
///////////////////////////////
public function gl_ship_cl() {
gl_variable = new global_variable_cl();
ver_bullet = new vector_bullet_cl();
x = 800;
y = 525;
this.addEventListener(Event.ENTER_FRAME, fn_control_ship);
private function fn_control_ship(e: Event): void {
if (rightPressed) {
rotation += gl_variable.rotation_ship;
}
if (leftPressed) {
rotation -= gl_variable.rotation_ship;
}
if (upPressed) {
if (gl_variable.jump_ship <= gl_variable.jump_ship_max) {
gl_variable.jump_ship += gl_variable.factor_jump_ship;
}
vector_Vx_ship = gl_variable.factor_speed_ship * gl_variable.jump_ship * Math.cos(rotation * Math.PI / 180);
vector_Vy_ship = gl_variable.factor_speed_ship * gl_variable.jump_ship * Math.sin(rotation * Math.PI / 180);
x -= vector_Vx_ship;
y -= vector_Vy_ship;
} else {
if (gl_variable.jump_ship >= 0.2) {
vector_Vx_ship = vector_Vx_ship * gl_variable.braking_ship;
vector_Vy_ship = vector_Vy_ship * gl_variable.braking_ship;
x -= vector_Vx_ship;
y -= vector_Vy_ship;
gl_variable.jump_ship -= 0.15;
}
}
fn_stage_x_y_ship();
}
private function fn_stage_x_y_ship(): void {
if (x > stage.stageWidth - 30) {
x = 30;
}
if (x < 30) {
x = stage.stageWidth - 30;
}
if (y > stage.stageHeight - 30) {
y = 180;
}
if (y < 180) {
y = stage.stageHeight - 30;
}
}
}
}
Добавлено через 1 минуту
тут немного больше переменных, код не полный, боюсь если начну сильнее править, допущу ошибку