Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 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 недели бьюсь как рыба об лед,ничего не выходит исправить, гуглил, не помогло

Старый 21.04.2014, 23:35
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 2  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Код 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() 
		{
			this.addEventListener(Event.ADDED_TO_STAGE, init);
		}
		public function init(e:Event):void
		{	
			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");
		}
....
__________________
There is no thing in this world that is not simple.

Старый 22.04.2014, 00:18
iters вне форума Посмотреть профиль Отправить личное сообщение для iters Найти все сообщения от iters
  № 3  
Ответить с цитированием
iters

Регистрация: Aug 2013
Сообщений: 14
не помогло

Старый 22.04.2014, 02:57
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 4  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Естественно, у вас же ошибка говорит про lvl16, а не про lvl5.
__________________
There is no thing in this world that is not simple.

Старый 22.04.2014, 14:40
iters вне форума Посмотреть профиль Отправить личное сообщение для iters Найти все сообщения от iters
  № 5  
Ответить с цитированием
iters

Регистрация: Aug 2013
Сообщений: 14
не имеет значения, у всех файлов выдает одну и ту же ошибку, конечно же будет написаны разные файлы

Старый 22.04.2014, 15:13
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 6  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Ну тогда протрейсите всё, что вы делаете в методе createWallStage.
И найдите, почему и что там == null.
__________________
There is no thing in this world that is not simple.

Старый 22.04.2014, 15:21
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
мм, а разве брейкпоинт не срабатывает при выбросе ошибки? В чем код пишется вообще?

Старый 22.04.2014, 15:22
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 8  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
мм, а разве брейкпоинт не срабатывает при выбросе ошибки? В чем код пишется вообще?
Как раз трейсом и можно найти место, где возникает ошибка. Трейс работает до ошибки.
__________________
There is no thing in this world that is not simple.

Старый 22.04.2014, 15:47
iters вне форума Посмотреть профиль Отправить личное сообщение для iters Найти все сообщения от iters
  № 9  
Ответить с цитированием
iters

Регистрация: Aug 2013
Сообщений: 14
код пишу во flash develop , собираю файлы в adobe flash cs5.5, у меня не так много опыта , можете объяснить что такое брейкпоинт?

Старый 22.04.2014, 17:33
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 10  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
брейкпоинт - точка остановки в дебаггере, учитесь гуглить и читать документацию раз уж взялись программировать.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:21.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.