![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2010
Сообщений: 434
|
Сделал функцию для проверки столкновений мувиклипов
public static function CheckCollision(Object1: MovieClip, Object2: MovieClip): Boolean { //-------------------------------------------------------------------- var bmpd1: BitmapData; var bmpd2: BitmapData; var bool: Boolean; //-------------------------------------------------------------------- bmpd1 = new BitmapData(550, 400, true, 0); bmpd2 = new BitmapData(550, 400, true, 0); bmpd1.fillRect(bmpd1.rect, 0); bmpd2.fillRect(bmpd2.rect, 0); bmpd1.draw(Object1, new Matrix(1, 0, 0, 1, Object1.x, Object1.y)); bmpd2.draw(Object2, new Matrix(1, 0, 0, 1, Object2.x, Object2.y)); if (bmpd1.hitTest(new Point(), 255, bmpd2, new Point(), 255)) { bool = true; } else { bool = false; } bmpd1.dispose(); bmpd2.dispose(); bmpd1 = null; bmpd2 = null; //-------------------------------------------------------------------- return bool; //-------------------------------------------------------------------- } особенно если проверку столкновений делать в EnterFrame память всё растёт и растёт, как это поправить у кого есть идеи ? |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 434
|
dispose помогает я нечего не говорю, но сёравно если часто вызывать эту функцию то память растёт
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
з.ы. А разве hitTest() есть в AS3? O_o |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 434
|
для BitmapData есть) а можно принудительно вызвать сборщик мусора ? и следует ли это делать ?
|
|
|||||
|
Следует, in debug purposes.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Nov 2010
Сообщений: 434
|
скачал исходник, запустил его проверять, память как нагружалась так и продолжает нагружаться
|
|
|||||
|
Я Вам гарантирую, что Вы не удаляете все ссылки на объект.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 434
|
посмотрите я скину весь код
вот класс MathGeom в котором есть функция для проверки столкновений package { import flash.display.MovieClip; import flash.display.BitmapData; import flash.geom.Matrix; import flash.geom.Point; public class MathGeom { public static function CheckCollision(Object1: MovieClip, Object2: MovieClip): Boolean { //-------------------------------------------------------------------- var bmpd1: BitmapData; var bmpd2: BitmapData; var bool: Boolean; //-------------------------------------------------------------------- bmpd1 = new BitmapData(1550, 1400, true, 0); bmpd2 = new BitmapData(500, 400, true, 0); bmpd1.fillRect(bmpd1.rect, 0); bmpd2.fillRect(bmpd2.rect, 0); bmpd1.draw(Object1, new Matrix(1, 0, 0, 1, Object1.x, Object1.y)); bmpd2.draw(Object2, new Matrix(1, 0, 0, 1, Object2.x, Object2.y)); if (bmpd1.hitTest(new Point(), 255, bmpd2, new Point(), 255)) { bool = true; } else { bool = false; } bmpd1.dispose(); bmpd2.dispose(); bmpd1 = null; bmpd2 = null; //-------------------------------------------------------------------- return bool; //-------------------------------------------------------------------- } } } package { import flash.display.MovieClip; import flash.geom.Point; import flash.geom.Matrix; import flash.display.BitmapData; import flash.events.Event; import MathGeom; public class Main extends MovieClip { public var a: aaa = new aaa; //MovieClip public var b: bbb = new bbb; //MovieClip public function Main() { a.x = 100; a.y = 100; addChild(a); b.x = 170; b.y = 100; addChild(b); this.addEventListener(Event.ENTER_FRAME, EnterFrame); } private function EnterFrame(e: Event): void { trace(MathGeom.CheckCollision(a, b)); } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:08. |
|
|
« Предыдущая тема | Следующая тема » |
|
|