![]() |
Вложений: 1
Вот написал эффектик с использованием частиц.. В роли частиц у меня отрисованные программно векторные кружки. Подскажите, может возможно оптимизировать скорость этого эффекта при помощи BitMap класса?.. Я не работал с ним особо...
Приложил исходник в зипе. Просто кликаешь мышкой на экран, и из мышки взрываются 500 частиц, оседая на рамке экрана. Вот не знаю... Зипы боятся качать?.. Я бы мог выложить по файлам "*.fla" и "*.as", но такой формат прикреплять нельзя...=( |
Не знаю, что ты собрался делать с помощью класса Bitmap.
Единственное, что могу предположить, это сфотографировать все кадры твоего взрыва. А потом сменять битмапы. Но такое кол-во битмап загрузит всю оперативку и производительности из этого ты не получишь. А теперь методы, с помощью которых можно увеличить производительность: Стандартный класс Tween сам по себе не очень производительный, советую использовать какой-нибудь иной, например Caurina Tweener. Пусть 1 Экземпляр класса "Твинер" управляет всеми твоими частицами. (т.е. просто гоняет число от 0 до 1) А ты на прогресс меняешь координаты всем частицам в цикле. Так же, когда ты убираешь частицы со сцены, на событие mouseDown, частицы продолжают вычислять свое движение. Поэтому нужно сделать для них метод destroy() внутри которого перестать вычислять новые кординаты и отписаться от enterFrame.. Вообщем флеш способен на многое, если правильно писать код :) |
Сделайте одну обработку Event.ENTER_FRAME в Document class'е, в ней перебирайте частицы.
Если делать с помощью BitmapData, достаточно иметь один экземпляр частицы, который постоянно отрисовывать, меняя только координаты в цикле. |
что-то типа такого?
Код:
package { |
Вот только divinus меня понял... Спасибо за пример=)
|
2divinus
super.stage.addEventListener(MouseEvent.CLICK, this.handler_mouseClick); почему не просто stage ? |
2ign, привычка.
И кстати Цитата:
|
Цитата:
|
Цитата:
2__etc переопределение геттера stage, это конечно круто :) Причем переопределение должно быть в этом же классе. |
Цитата:
|
Где вы видели, чтобы я использовал Твинер?.. У меня рассчитывается равноускоренное движение по формулам в onEnterFrame...
|
Цитата:
в том варианте что вы предложили, твинер выполняет функцию, с которой обычный таймер справится куда лучше... |
super.stage - это конечно знатно, как и мотивация его использования.
Даже если впоследствии и возникнет переопределение stage, то всё равно будет возвращаться экземпляр Stage и ничего страшного не произойдет. Ну и опять-же: если кто-то и решится на такое переопределение, то именно он и будет нести ответственность за работоспособность кода. Проблемы нужно решать по мере их возникновения, а не пытаться предусмотреть всё и вся. В противном случае это борьба с ветряными мельницами. |
Цитата:
|
Цитата:
Давай еще 100-200 таких проблем успешно предусмотрим. |
Цитата:
Инкапсуляция, все дела. Дальнейшие изменения не должны приводить к поломке существующего кода. |
Господа... Вы не по сабжу=))
|
Желание защитить свой код от дурака понятно, но неэффективно: дурак и это сломает, уж поверь.
Но ни что не дается даром: боязнь, кривых ручек приводит к тому, что вы закрываете возможности тем, у которых ручки прямые. |
Цитата:
|
Да это понятно.
В битве за мифическую работоспособность кода вы закрываете возможности, а это не правильно, двигаться нужно ровно в обратном направлении. Если кто-то переопределит stage и обнаружит, что ваш код не работает, то понятное дело, что это именно его проблемы, а не ваши, ему их и решать. Неуемное использование super мне напоминает прививку от несуществующей болезни, которая может быть возникнет в будущем. Ты в жизни делал себе хоть раз такие прививки? |
Я закрываю возможности, потому что их просто и не должно быть. Некоторые вещи (например, тот же stage), наружу торчать не должны. Я не собираюсь развязывать руки кому-то, мне это как раз таки противопоказано. А в общем и целом, использование super никому не вредит.
|
Iv, ату! бУ! дениско, так держать :)
|
etc, ваш способ не спасет, если stage переопределят в базовом классе данного класса. Ну хотя, если super.super.stage :mosking:
|
Цитата:
|
Яски, если переопределить в базовом классе, это никак не сохранит работу приложения на наследников. тут не спасёт ни this, super. это означает, что инкапсуляция сработала раньше :)
|
| Часовой пояс GMT +4, время: 22:15. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.