Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблемы со статичным добавлением (http://www.flasher.ru/forum/showthread.php?t=146435)

in4core 08.11.2010 02:29

Проблемы со статичным добавлением
 
Вот такой вопрос заинтересовал.
Есть скажем класс, в нем как статичные так и обычные переменные и функции.
Некоторый объект ( допустим спрайт ) будет статичной переменной. Использоваться будет так же в обоих функциях. Для чего это надо, думаю не суть важно. Смысл лишь тот, что для всех экземпляров созданного класса будет одно общее свойство которое можно изменить моментально для всех сразу. И вот вопрос
Допустим наш спрайт как я уже сказал статичный. Но кроме статичных методов, он выполняет еще посылы конструктора, скажем событие двигающее по x координате спрайт наш, так вот с каждым новым добавлением класса, поскольку спрайт статичный x будет наростать. Как этого избежать? Вот пример

Код AS3:

private static var spr:Sprite;
public function Main () {
  spr = new Sprite();
  stage.addEventListener(Event.ENTER_FRAME,onFrame);
  }
private function onFrame(e:Event) {
  spr.x ++; // сначала у нас по 1 движется, а при создании еще экземпляров уже 2,....n ,  как этого избежать при такой конструкции?
} 
public static function someEvent() {
    trace('apply to all')
}


BlooDHounD 08.11.2010 03:26

никак. бредовая конструкция.

Psycho Tiger 08.11.2010 16:06

Сделать метод инициализирующий
Код AS3:

stage.addEventListener(Event.ENTER_FRAME,onFrame);

в другом методе и дёрнуть его разок.

А подход убог.

-De- 08.11.2010 16:19

Перед stage.addEventListener(Event.ENTER_FRAME,onFrame);
поставить
stage.removeEventListener(Event.ENTER_FRAME,onFrame); и onFrame сделать статической.
Ну и бред, да =)
То, что у вас куча спрайтов создается не смущает, кстати?

dimarik 08.11.2010 18:48

Заведите статический счетчик инстансов Main и поле класса - номер текущего инстанса. Координату нового спрайта вычисляйте с поправкой на их количество.


Часовой пояс GMT +4, время: 08:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.