![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
Добрый день!
Возник наверно пустяковый вопрос, но ставит в тупик Есть пулы, в которых сидят объекты Box2D, так вот, вывести - выведу, а обратно в пул запихнуть как? так вывожу, в коде много через get, что бы каждый мувик сам хранил все свои параметры package Pool { import Box2D.Collision.Shapes.b2PolygonShape; import Box2D.Common.Math.b2Vec2; //temp import Box2D.Dynamics.b2Body; import Box2D.Dynamics.b2BodyDef; import Box2D.Dynamics.b2FixtureDef; import Box2D.Dynamics.b2World; //временно import flash.display.MovieClip; public class PoolBox2D { //******************************************************************************* private var movieClip:Class; private var vectorPool:Vector.<b2Body> = new Vector.<b2Body>; private var meters:uint = 30; private var body:b2Body; public function PoolBox2D(_movieClip:MovieClip, lengthPool:uint, world:b2World, stage:*) //world and stage - temp { movieClip = MovieClip(_movieClip).constructor; for (var i:uint = 0; lengthPool > i; ++i) { var movieClipView:MovieClip = new movieClip() as MovieClip; var bodyDef:b2BodyDef; var bodyShapePoligon:b2PolygonShape; var fixtureDef:b2FixtureDef; bodyDef = movieClipView.getBodyDef; bodyDef.position.Set((Math.random() * 1600) / meters, 1050 / meters / 2); bodyDef.userData = movieClipView; body = world.CreateBody(bodyDef); bodyShapePoligon = movieClipView.getBodyShapePoligon; fixtureDef = movieClipView.getFixtureDef; body.SetBullet(movieClipView.getCCD); body.CreateFixture(fixtureDef); stage.addChild(movieClipView); lengthPool = movieClipView.getlengthPool;//подумать } } } } |
|
|||||
|
Ни в какой пул они здесь не попадают, а просто создаются. По крайней мере в этом коде ничего подобного нет.
Цитата:
|
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
это часть кода, пул я создаю
в классе мейн я создаю массив всех объектов(точнее несколько, в зависимости от типов) и передаю его в класс createPool, createPool каждый объект (точнее тип) отправляет в класс PoolBox2D и возвращает в класс main массив пулов, PoolBox2D создаёт пул (он же и выводит на экран, так как я ещё не создал класс, который бы контролирует вывод на сцену, т.к. в первые решил сделать подобную конструкцию, нужно тестить было). может кажется громоздко, зато получилось удобно, независимые универсальные классы, и все легко подкручивается так вот, мувик я разумеется, то я знаю как удалить со сцены(делал пулы из мувиков/спрайтов) и оставить в пуле, а как удалить со сцены объект бокс2д, не удаляя его из пула? удалю со сцены userData, останется же сама форма (хз как называется, в дебаг режиме обводится контор), где у box2d правильнfя команда remove? Добавлено через 19 минут public function PoolBox2D(_movieClip:MovieClip, world:b2World, stage:*) //world and stage - temp { var lengthPool:uint = _movieClip.getlengthPool;//подумать movieClip = MovieClip(_movieClip).constructor; но появилась другая, хотя незначительная сюда я передаю уже созданный мувик, но не добавленный на сцену, т.е. в итоге лишний объект так вот, если я создам этот мувик локально в функции и передам сюда, то по завершению функции ссылка на него пропадёт и его рано или поздно удалит сборщик мусора? Последний раз редактировалось neonoviiwolf; 09.06.2015 в 12:48. |
|
|||||
|
Цитата:
.isLocked() == false. То есть надо делать это перед началом шага (перед вызовом b2World.Step()) Точно не помню уже уничтожается тело при этом или нет. п.с. Вообще бокс2д ужасен. Он тормозной и API у него никудышный. Nape в сто раз лучше. Советую сразу забить на бокс2д и изучать нейп. В нейпе тело легко удаляется из мира через _space.bodies.remove(body); и так же легко опять возвращается в мир либо через body.space = _space; либо _space.bodies.add(body); |
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
не в защиту бокса2д
у него у течка памяти в в какой-то функции из нижестоящих, но они нужны ток при разработке world.SetDebugDraw(debugDraw); world.DrawDebugData(); если отключить, то 61 объект на сцене жрёт около 30% (скачки при расчётам до 60%) - это всё вместе, т.е. математика и графика что в принципе нормально, в следующий раз мож и nape попробую Добавлено через 6 минут ой, вру, при 41, при 61 тормозит Добавлено через 14 минут хм... а есть хороший учебник/уроки по nape (с английским совсем плохо)? Последний раз редактировалось neonoviiwolf; 09.06.2015 в 13:36. |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|