|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: 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 ниже 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); } ..... 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"); } .... |
|
|||||
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. |
|
|||||
Регистрация: Aug 2013
Сообщений: 14
|
не помогло
|
|
|||||
Регистрация: Aug 2013
Сообщений: 14
|
не имеет значения, у всех файлов выдает одну и ту же ошибку, конечно же будет написаны разные файлы
|
|
|||||
Как раз трейсом и можно найти место, где возникает ошибка. Трейс работает до ошибки.
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Aug 2013
Сообщений: 14
|
код пишу во flash develop , собираю файлы в adobe flash cs5.5, у меня не так много опыта , можете объяснить что такое брейкпоинт?
|
Часовой пояс GMT +4, время: 15:21. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|