![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2009
Сообщений: 75
|
Здравствуйте.
Вроде всё должно быть просто, но никак не получается. Есть экземпляр класса Stone, наследованый от MovieClip. Есть StoneFactory, которая отдаёт этот объект. В контроллере пишу ф-ию, которая создаёт новый камень и добавляет его в массив всех камней. Так вот проблема в том что вроде бы пишу 'new', массив камней заполняется, но выходит что в массиве ссылка на один и тот же камень. Класс Stone: public class Stone extends MovieClip { public var X:int; public var Y:int; public var Xo:int; public var Yo:int; public var Vx:Number; public var Vy:Number; public var type:String; public var weight:int; public var V:Number; public var T:int = 0; //Сколько времени летит снаряд public var flagStop:Boolean = false; //Остановился ли снаряд public var flagInWater:Boolean = false; //В воде ли снаряд public var stoneRotation:Number = 0; //Скорость вращения снаряда public var selfDirection:Number = 0; //Коэффициент самонаведения (для коровы) public var partsNum:int = 0; //Количество частей, на которое разделяется снаряд public var baseV:Number = 0; //Базовая скорость маленьких снарядов после разделения public var randomV:Number = 0; //Случайная составляющая скорости маленьких снарядов после разделения public function Stone():void { } } Класс StoneFactory: public class StoneFactory { private var _stones:Array = new Array(); //Синглтон private static var _instance:StoneFactory; public static function GetInstance():StoneFactory { if (_instance == null) { _instance = new StoneFactory() }; return _instance; } public function StoneFactory():void { var model:Model = Model.GetInstance(); //Первое оружие var simpleStone:Stone = new Stone(); simpleStone.type = 'simpleStone'; simpleStone.weight = 100; simpleStone.Xo = model.startStoneX; simpleStone.Yo = model.startStoneY; simpleStone.stoneRotation = 50; var mcSimpleStoneImage:MovieClip = new MovieClip(); mcSimpleStoneImage = ClassParser.CreateDisplayObjectByName('Graph_Stone'); simpleStone.addChild(mcSimpleStoneImage); _stones.push(simpleStone); } public function getStone(itype:String):Stone { for each(var stone:Stone in _stones) { if (stone.type == itype) { return stone }; } var newStone:Stone = new Stone(); return newStone; } } Контроллер: //Ф-ия, выстреливающая снаряды (как мои, так и кораблей) private function create_stone(itype:String, iXo:Number, iYo:Number, iVxo:Number, iVyo:Number):void { var model:Model = Model.GetInstance(); var view:View = View.GetInstance(); var stoneFactory:StoneFactory = StoneFactory.GetInstance(); var stone:Stone = new Stone(); stone = stoneFactory.getStone(itype); view.mcBackground.addChild(stone); stone.Xo = iXo; stone.Yo = iYo; stone.Vx = iVxo; stone.Vy = iVyo; model.stones.push(stone); } |
![]() |
Часовой пояс GMT +4, время: 21:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|