Флеш игра отстает в хром на Mac - PullRequest
0 голосов
/ 19 ноября 2011

Я создал простую флеш игру, похожую на стрельбу по шарам.Вы можете найти один пример на этом сайте .Моя игра отлично работает на окнах во всех браузерах (локально и на сервере), а также отлично работает на Mac в Safari и Firefox, но игра полностью не воспроизводится в Chrome на Mac.

Это из-за утечек памятив моей игре или это проблема хрома на Mac.

И как я могу отследить утечки памяти в моей игре.Он закодирован в AS3 с использованием Flash CS5.

Спасибо

Ответы [ 3 ]

1 голос
/ 19 ноября 2011

Действительно .. не воспроизводится с Mac / Chrome (версия 15.0.874.120) flash (версия 11.1.102.55).

Вы можете попробовать Monster Debugger: http://demonsterdebugger.com/

Это довольно легкоиспользовать.

Но сначала .. я предполагаю, что у вас есть что-то в вашем основном игровом цикле (onEnterFrame, таймер).Вы можете пытаться удалять вещи из вашего игрового цикла по кусочкам, пока не поймете проблему.

РЕДАКТИРОВАТЬ: Я попробовал вашу игру еще раз, и я считаю, что проблема в том, как вы справляетесь с сердцами, возможно, вы забылиremoveChild или некоторые слушатели, когда сердца опускаются, и с экрана.

0 голосов
/ 19 ноября 2011

кажется, что вы не очищаете или не перезаписываете растровые данные или какой-либо другой объект, когда он больше не нужен, что приводит к добавлению в память все большего и большего количества данных (часто в обработчике события Enter Frame) и приводит к значительной производительностипроблемы, как мы видим здесь.

0 голосов
/ 19 ноября 2011

Flash использует сборщик мусора для управления памятью. Это означает, что утечки памяти не существуют по определению, все, что находится в памяти, где-то ссылается. Для внешнего инструмента или приложения нет способа узнать, следует ли ссылаться на объект в памяти.

Что вы можете сделать, это запустить вашу игру через профилировщик (у Flash Builder есть такой), который будет отслеживать использование памяти вашим приложением и с этим вы можете выяснить, что вы забыли очистить ссылку (var = null или mc.removeChild(var)) ).

...