Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   События (http://www.flasher.ru/forum/showthread.php?t=95207)

undeddy 30.04.2007 12:52

События
 
Еесть несколько мувиклипов. Каждому из них присвоены 3 события (набор событий одинаков для кадого клипа). Ввиду отсутсвия даже средних знаний по флешу я делаю так: клип.событие = function(){}, отдельно для каждого клипа по три события. Получается громоздко (9 обработчиков). Как это можно сделать более компактно?

etc 30.04.2007 13:05

Код:

releaseHandler = function() {
    trace(this);
}
mc1.onRelease = releaseHandler;
mc2.onRelease = releaseHandler;
mc2.onRelease = releaseHandler;

Или в цикле.

Molecula 30.04.2007 14:51

Я думаю можно и так:

Код:

mc1.onRelease = mc2.onRelease = mc2.onRelease = releaseHandler;

undeddy 30.04.2007 15:54

Пробую через циклы. К примеру, вот:
Код:

for (j=1; j<4; j++) {

  eval('mc'+j).onRollOver = function() { //////тратата/////// }

}

Грамотен ли код?

etc 30.04.2007 15:58

Код:

for (var i = 0;i<4;i++) {
  var mc = this['mc'+i];
  mc.onRelease = function() {
      …
  }
  mc.onRollOver = function() {
      …
  }
  …
}
delete mc;


undeddy 30.04.2007 16:45

Код:

for (var i = 0;i<4;i++) {
  var mc = this['mc'+i];
  mc.onRelease = function() {
    trace(i)  }
  mc.onRollOver = function() {
      …
  }
  …
}
delete mc;

Почему-то трассируется '4'. Почему же не трассируется последовательно '0, 1, 2, 3' ?

etc 30.04.2007 16:48

По-моему логично, разве нет? Цикл закончился, переменная приняла значение 4, его мы и трейсим.

undeddy 30.04.2007 17:04

Дак цикл ведь повторяется 3 раза. почему трассируется только один раз? И ведь мы поставили условие i<4. Разве эта переменная может принять значение 4?

etc 30.04.2007 17:06

Цикл выполняется, пока переменная не примет значение 4. Она его приняла. Если бы не приняла, цикл был бы вечный.
Трейс будет при нажатии на клип мышкой.

undeddy 30.04.2007 17:23

Окей. Но у меня в свзяи с этим возникает еще одна проблема:
Код:

for (var i = 0;i<4;i++) {
  var mc = this['mc'+i];
  mc.onRelease = function() {
      some_function(i)
  }
  mc.onRollOver = function() {
      …
  }
  …
}
delete mc;

При нажатии на мувиклип mc вызывается функция с параметром, равным i. Так для mc1 он должен быть 1, mc2 - 2 и т.д. Но выходит так, что параметр принимает сразу конечное значение i=4. А необходимо, чтобы для каждого мувика он был свой.


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

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