![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2013
Сообщений: 75
|
Прошу помочь.
![]() У меня есть класс в котором есть переменная, когда я пытаюсь узнать её значение из других классов, значение получается разным. Значение я получаю следующим образом: //моя переменная private var enemies:Array = new Array(); ... public function getNumEnemies():int { return enemies.length; } Вот скрин: |
|
|||||
|
Need more
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
|
Регистрация: Nov 2013
Сообщений: 75
|
класс консоли:
package code.featherConsole { import code.control.ButtonsFunctions; import code.Enemies.CreateEnemy; import code.featherDebug_info.*; import flash.display.Sprite; import flash.events.*; import flash.text.TextField; public class activateConsole extends TraceThis { private var console:Sprite = new Sprite(); private var _enemy:CreateEnemy = new CreateEnemy(); private var _text:FunctionText = new FunctionText(); private var _buttons:ButtonsFunctions = new ButtonsFunctions(); private var inputText:TextField = new TextField(); private var fl:Boolean = false; private var staticTexts:Array = new Array(); private var commands:Array = new Array(); public var consoleCreated:Boolean = false; public function activateConsole() { addChild(_enemy); } public function consoleOn():void { if (!consoleCreated) { createConsole(); inputText = _text.AddTextFieldInput(35, 360, true); console.addChild(inputText); inputText.addEventListener(KeyboardEvent.KEY_DOWN, _buttons.KeyDown); inputText.addEventListener(KeyboardEvent.KEY_UP, _buttons.KeyUp); helpCommands(); consoleCreated = true; addChild(console); } } private function helpCommands():void { commands.push("Список команд :", "fps on - показывать FPS, fps off - не показывать FPS"); commands.push("version of game - версия игры"); } private function fillConsole(textFill:String):void { var staticText:TextField = new TextField(); staticText = _text.AddTextFieldStatic(35, 360, ">" + textFill, 0x000000); console.addChild(staticText); staticTexts.push(staticText); sortList(); } private function sortList():void { for (var i:int = 0; i < staticTexts.length; i++) { staticTexts[i].y -= 20; } if (staticTexts.length >= 17) { console.removeChild(staticTexts[0]); staticTexts.splice(0, 1); } } public function consoleOff():void { if (consoleCreated) { inputText.removeEventListener(KeyboardEvent.KEY_DOWN, _buttons.KeyDown); inputText.removeEventListener(KeyboardEvent.KEY_UP, _buttons.KeyUp); removeChild(console); consoleCreated = false; } } public function UpdateConsole():void { if (fl) { _debugInfo.debugUpdate(); } inputCommand(inputText.text); //значения это просто координаты _enemy.enemyUpdate(45, 438, 583.25); trace(_enemy.getNumEnemies()); } private function inputCommand(input:String):void { if (_buttons.ButtonsArr[6]) { switch(input) { case "help": { for (var i:int = 0; i < commands.length; i++) { fillConsole(commands[i]); } break; } case "fps on": { _debugInfo = new TraceThis(1, 1, 1); addChild(_debugInfo); fl = true; fillConsole("Fps on"); break; } case "fps off": { if (fl) { removeChild(_debugInfo); fl = false; fillConsole("Fps off"); } break; } case "add enemy": { fillConsole("Enemy added."); _enemy.createEnemy(/*Enemy,*/ "enemy", 100, 0.1, 80, 4, true); break; } case "": { break; } default : { fillConsole("Unknown command!"); inputText.text = ""; break; } } inputText.text = ""; } } private function createConsole():void { var Text:TextField = new TextField(); Text = _text.AddTextFieldStatic(35, 10, "Game Console", 0xFFFFFF); console.graphics.beginFill(0x73B3F2, 0.8); console.graphics.drawRect(10, 10, 350, 400); console.graphics.lineStyle(1, 0x8AC0F4); console.graphics.beginFill(0x8AC0F4, 0.5); console.graphics.drawRect(35, 30, 300, 350); console.addChild(Text); console.addEventListener(MouseEvent.MOUSE_DOWN, m_down); console.addEventListener(MouseEvent.MOUSE_UP, m_up); } private function m_down(e:Event):void { e.currentTarget.startDrag(); } private function m_up(e:Event):void { e.currentTarget.stopDrag(); } } } package code.Enemies { import flash.events.*; import flash.display.*; import code.featherAntimation.*; public class CreateEnemy extends MovieClip { private var gravity:Number = 0.2; private var friction:Number = 0.95; private var enemies:Array = new Array(); public function CreateEnemy():void { } //графика, здоровье, урон, скорость передвижения, координаты, можно ли двигать. public function createEnemy(/*graf:Class,*/ Name:String, hp:Number, damage:Number, massOfEnemy:Number, enemySpeed:Number, draggable:Boolean):void { var enemy:Object = new Object(); enemy.Name = Name; enemy.graf = new FeatherClip(); enemy.hp = hp; enemy.mass = massOfEnemy; enemy.damage = damage; enemy.enemySpeed = Math.random() * enemySpeed; enemy.draggable = draggable; enemy.buttonDown = false; enemy.state = 0; enemy.SpeedY = 0; enemy.SpeedX = 0; enemy.Attack = false; enemy.Y = generateCoor(600, 438); enemy.graf.y = enemy.Y; enemy.graf.x = -100 * Math.random(); addChild(enemy.graf); enemies.push(enemy); } public function enemyUpdate(angle:Number, maxY:Number, toX:Number):void { enemyMove(toX, angle, maxY); } public function getNumEnemies():int { return enemies.length; } public function destroyEnemy(i:int):void { removeChild(enemies[i].graf); enemies.splice(i, 1); } package code { import flash.utils.*; import code.control.ButtonsFunctions; import code.featherConsole.activateConsole; import flash.display.MovieClip; import flash.events.*; import code.Enemies.CreateEnemy; public class App extends MovieClip { private var _enemy:CreateEnemy = new CreateEnemy(); private var _buttons:ButtonsFunctions = new ButtonsFunctions(); private var _console:activateConsole = new activateConsole(); private var nCount:int = 0; public function App() { if (stage) { init(); } else { addEventListener(Event.ADDED_TO_STAGE, init); } } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); addEventListener(Event.ENTER_FRAME, enterFrame); stage.addEventListener(KeyboardEvent.KEY_DOWN, _buttons.KeyDown); stage.addEventListener(KeyboardEvent.KEY_UP, _buttons.KeyUp); addChild(_enemy); addChild(_console); for (var i:int = 0; i < 100; i++) { _enemy.createEnemy(/*Enemy,*/ "enemy", 100, 0.1, 80, 4, true); } } private function enterFrame(e:Event):void { trace(_enemy.getNumEnemies()); _enemy.enemyUpdate(45, 438, 583.25); _console.UpdateConsole(); control(); } } } |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 149
|
Особо не углублялся в Ваш, так сказать, код.
Но на первый взгляд видно что у вас создаются два разных объекта класса CreateEnemy, у которых разные массивы enemies которые вполне могут иметь разную длину. |
|
|||||
|
Вообще, это очень плохая привычка называть классы глаголами, а переменные не так, как называется класс.
Имя класса всегда должно быть существительным, а переменную экземпляр, лучше всего называть так, же, как называется класс, допустим CreateEnemy я бы переименовал хотя бы в EnemyManager, а переменную вместо _enemy назвал бы _enemyManager. Эта привычка может сыграть злую шутку еще не раз. |
|
|||||
|
Регистрация: Nov 2013
Сообщений: 75
|
Спасибо большое вам) Уже переписываю код.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 02:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|