Показать сообщение отдельно
Старый 21.04.2014, 23:13
iters вне форума Посмотреть профиль Отправить личное сообщение для iters Найти все сообщения от iters
  № 1  
Ответить с цитированием
iters

Регистрация: Aug 2013
Сообщений: 14
По умолчанию Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null"

Здравсвуйте,давно начал писать игру и вот уже все близится к завершению, но никак не могу собрать все уровни в одни файл. у меня есть класс Config где содержатся все главные методы и функции ,которые являются неким "позвоночником" и классы lvl1 , lvl2 , lvl3.. lvl16 , в которых я вызываю методы и свойства класса Config , эти классы и есть уровни в моей игре, далее(когда я писал уровни и не задумывался как буду все это сибить из-за недостатка опыта) я в файле game.fla в панеле properties ставил классы lvl1 или lvl2 .lvl16(зависит какой именно уровень хочу я запустить) и все работало, но теперь мне нужно запускать файлы уровней в файле файле game.fla из actionscript кода (var gameLvl:lvl5 = new lvl5() , при этот возникает ошибка :

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at Config$/createWallStage()
at lvl16()
at lvl_fla::MainTimeline/frame1()


части кода файла Config и ,например, файла lvl5 ниже

Код AS3:
package  
{
	import Box2D.Collision.ClipVertex;
	import Box2D.Collision.Shapes.b2CircleShape;
	import Box2D.Collision.Shapes.b2MassData;
	import Box2D.Collision.Shapes.b2PolygonShape;
	import Box2D.Common.Math.b2Vec2;
	import Box2D.Dynamics.b2Body;
	import Box2D.Dynamics.b2BodyDef;
	import Box2D.Dynamics.b2DebugDraw;
	import Box2D.Dynamics.b2FixtureDef;
	import Box2D.Dynamics.b2World;
	import Box2D.Dynamics.Controllers.b2BuoyancyController;
	import Box2D.Dynamics.Joints.b2DistanceJoint;
	import Box2D.Dynamics.Joints.b2DistanceJointDef;
	import Box2D.Dynamics.Joints.b2JointDef;
	import Box2D.Dynamics.Joints.b2RevoluteJoint;
	import Box2D.Dynamics.Joints.b2RevoluteJointDef;
	import fl.motion.AnimatorBase;
	import fl.motion.Color;
	import fl.motion.easing.Linear;
	import fl.transitions.easing.Strong;
	import fl.transitions.Fly;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
           import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.geom.ColorTransform;
	import flash.geom.Point;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.net.URLRequest;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import com.greensock.*;
	import com.greensock.easing.*;
	import flash.utils.Timer;
	/**
	 * ...
	 * @author 
	 */
	public class Config 
	{
		public static var _world:b2World; //мир
		public static var meters:Number = 40;
		public static var stageApp:Stage;
		public static var bodyGunBarbet:b2Body ;
		public static var bodybarrelGune:b2Body;
		static private var gunSprite:Sprite;
		static private var body:b2Body; //mixer
		static public var spriteMixer:Sprite;
		static private var bodyAngle;
		static private var body2:b2Body;
		public static var counter:Number = 0;
 
                      ...
 
		    public static function createWorld(xGravity:Number = 0, yGravity:Number = 0, doSleep:Boolean = true) {
			var gravity:b2Vec2 = new b2Vec2(xGravity, yGravity); 
			var sleepingBody:Boolean = doSleep; 
			_world = new b2World(gravity, sleepingBody); 
			return _world;
			}
 
			public static function setBg(stage:Stage):Sprite {
			var sprite:Sprite = new Bg() ;
			sprite.y = -25;
			sprite.x = -15;
			sprite.rotation = 1;
			return sprite;
			}
 
 
 
			public static function createDebugDraw(sprite:Sprite, scale:Number, alpha:Number, lineThickness:Number, flags:Number) {
			var debugDraw:b2DebugDraw = new b2DebugDraw(); //создаем объект отвечающий за настройки отрисовки debug тел
			debugDraw.SetSprite(sprite); //устанавливаем спрайт
			debugDraw.SetDrawScale(scale); //масштаб
			debugDraw.SetFillAlpha(alpha); //прозрачность
			debugDraw.SetLineThickness(lineThickness); //толщину линий
			//debugDraw.SetFlags(flags); //флаги
			_world.SetDebugDraw(debugDraw); //добавляем в мир
			_world.DrawDebugData(); //отрисовываем debug тела
			return debugDraw; //возвращаем ссылку на debugDraw
			}
 
 
			public static function createWallStage(thickness:Number = 10,padding:Number=0):void {
			var body:b2Body;  //тело
			var bodyDef:b2BodyDef; //геометрические параметры тела
			var bodyShapePoligon:b2PolygonShape; //шейп прямоугольника
  			var wallThickness:Number = thickness; //толщина стенки
 
			//left
			bodyDef = new b2BodyDef(); //создаем b2BodyDef
			bodyDef.position.Set(wallThickness/meters/2, stageApp.stageHeight/meters/2); //устанавливаем позицию тела на сцене
			bodyShapePoligon = new b2PolygonShape();
			bodyShapePoligon.SetAsBox(wallThickness/meters/ 2, stageApp.stageHeight / meters / 2);
			body = _world.CreateBody(bodyDef); //создаем тело
			body.CreateFixture2(bodyShapePoligon);
 
			//right
			bodyDef = new b2BodyDef(); //создаем b2BodyDef
			bodyDef.position.Set((stageApp.stageWidth-wallThickness/2)/meters, stageApp.stageHeight/meters/2); //устанавливаем позицию тела на сцене
			body = _world.CreateBody(bodyDef);//создаем тело
			body.CreateFixture2(bodyShapePoligon);
 
			//down
			bodyDef = new b2BodyDef(); //создаем b2BodyDef
			bodyDef.position.Set(stageApp.stageWidth/2/meters, (stageApp.stageHeight-wallThickness/2)/meters+padding/meters);
			bodyShapePoligon = new b2PolygonShape();
			bodyShapePoligon.SetAsBox(stageApp.stageWidth/meters/ 2, wallThickness / meters / 2); //устанавливаем позицию тела на сцене
			body = _world.CreateBody(bodyDef); //создаем тело
			body.CreateFixture2(bodyShapePoligon);
 
			//up
			bodyDef = new b2BodyDef(); //создаем b2BodyDef
			bodyDef.position.Set(stageApp.stageWidth/2/meters, wallThickness/2/meters); //устанавливаем позицию тела на сцене
			bodyShapePoligon = new b2PolygonShape();
			bodyShapePoligon.SetAsBox(stageApp.stageWidth/meters/ 2, wallThickness / meters / 2);
			body = _world.CreateBody(bodyDef); //создаем тело
			body.CreateFixture2(bodyShapePoligon);
			}
                          .....
Код AS3:
package  
{
	import Box2D.Dynamics.b2ContactListener;
	import Box2D.Dynamics.b2DebugDraw;
	import Box2D.Dynamics.b2World;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.net.drm.DRMPlaybackTimeWindow;
	import flash.text.TextField;
	import flash.utils.Timer;
 
	import Box2D.Collision.Shapes.b2CircleShape;
	import Box2D.Collision.Shapes.b2MassData;
	import Box2D.Collision.Shapes.b2PolygonShape;
	import Box2D.Common.Math.b2Vec2;
	import Box2D.Dynamics.b2Body;
	import Box2D.Dynamics.b2BodyDef;
	import Box2D.Dynamics.b2DebugDraw;
	import Box2D.Dynamics.b2FixtureDef;
	import Box2D.Dynamics.b2World;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.Event;
    import flash.events.MouseEvent;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.net.URLRequest;
 
	import com.greensock.*;
	import com.greensock.easing.*;
	/**
	 * ...
	 * @author 
	 */
 
	public class lvl5 extends Sprite
	{
		var _world:b2World ;
		var debugSprite:Sprite = new Sprite() ;
		var BGsprite:Sprite = new Bg() ;
		var globalSmoke:Array = new Array() ;
		private var velocityIterations:int = 10; 
		private var positionIterations:int = 10; 
		private var timeStep:Number = 1 / 24; 
		private var objectForRotation:String ;
		private var next:Sprite;
		private var menu:Sprite;
		private var tryAgain:Sprite;
		private var shoots:TextField;
		private var countShoots:Number=0;
		private var time:TextField;
		private var frame:Number=0;
		private var curentTime:Number=0;
		private var finalShoot:TextField;
		private var finalTime:TextField;
		private var Wn:Sprite;
		public var timeerok:Timer = new Timer(3000, 1) ;
		private var pauseButton:TextField ;
		private var restartButton:TextField ;
		private var EndGame:Boolean = false;
 
 
 
		public function lvl5() 
		{	
			addChild(Config.setBg(this.stage)) ;			
			addChild(debugSprite);
			_world = Config.createWorld(0.0, 10, true);
		           Config.stageApp = stage;
			Config.meters = 30; 
                                 Config.createWallStage(10); 
			Config.setFrutes(this.stage);
			Config.addGunsBody(20,390);
			Config.createDebugDraw(debugSprite, 30.0, 0.4, 1, b2DebugDraw.e_shapeBit |                                b2DebugDraw.e_centerOfMassBit);
			Config.setMixer(460,320,0,4,true);
			Config.addJumperForLvl5();
			Config.addMouseEv();
			addEventListener(Event.ENTER_FRAME, update) ;
			addEventListener(Event.ENTER_FRAME, shootGune);
			addEventListener(Event.ENTER_FRAME , updateFrutesSprites) ;
			addEventListener(Event.ENTER_FRAME , updateSmoke);
			_world.SetContactListener(new b2ContactListenerList() ) ;
 
			shoots = Config.creatTextField(70, 20, false, true, true,false,400,10,15);
			addChild(shoots) ;
 
			time = Config.creatTextField(50, 30, false, true, true, false,490,10,15);
			addChild(time) ;	
 
			pauseButton = Config.creatActiveButton(20, 5, "pause");
			restartButton = Config.creatActiveButton(pauseButton.x + 60, 5, "restart");
		}
....
Помогите пожалуйста решить эту проблему, уже 2 недели бьюсь как рыба об лед,ничего не выходит исправить, гуглил, не помогло