Форум 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=110392)

Netter2007 02.04.2008 01:45

Много мувиков-одна функция
 
Есть несколько мувиков на сцене.. При наведении мыши для всех должна выполнятся одна и таже функция.
Как написать короотко, чтобы не повтрять одно и тоже для всех имен экземпляров ?

screamge 02.04.2008 02:27

Вешать событие на всех в цикле, либо имена мувиков в массиве, либо либо имена мувиков различны только состовляющим индексом.

lexo2000 02.04.2008 08:25

можно еще определить метод для клипов в прототипе конструктора MovieClip
Код:

MovieClip.prototype.onRollOver = function() {
метод будет унаследован всеми мувиклипами. далее, поскольку действие должно применяться только к определенным клипам, т.е. (допустим) к клипам, имя которых будет начинаться с букв "mc"
Код:

if (this._name.substr(0, 2) == "mc") {
здесь пишем обработчик

screamge 02.04.2008 16:00

lexo2000, не нужно советовать в корне не правильные вещи.

Psycho Tiger 02.04.2008 16:58

То что написал лехо2000 будет работать, но будем тратить лишнее ЦП при наведении на вычисление, тот ли это мувик+на всех остальных будет палец...
Если мувики одни - можно пойти старым путем (это ведь не ас3) - пишем код в самом мувике.
Ну или...
Код:

mc1.onRollOver=mc2.onRollOver=mc3.onRollOver=function():String { return "Я ем криветку"; }

Netter2007 02.04.2008 17:05

Вот, я вспоминал как э то делается, думал просто указать через запятую, типа
Код:

mc1,mc2,mc3.onRollOver=function():String { return "Я ем криветку"; }
ошибку в синтаксисе не выдает, но и не работает.
буду делать так как посоветовал Tiger
Спасибо

Kinley 02.04.2008 17:58

Еще вопрос, думаю по этой же теме.
У меня создается n-ное количество мувиклипов (все зависит от xml-файла). Мне надо узнать, на каком из них щелкнула мышка...
Вотъ...

Но в обоих способах, описанных выше, нужно знать, сколько всего мувиклипов...
Подскажите пожалуйста, что делать? :rolleyes:

Netter2007 02.04.2008 19:51

Я бы раньше, до того как меня здесь научили что так уже никто не делает, прописал бы обработку событие нажатия мыши внутри мувиклипа, а по другому не знаю, сам подожду кто что скажет.

iNils 02.04.2008 19:58

Код:

function a () {
        trace (this);
}
for (var i:Number = 0; i < 5; i++) {
        this["mc" + i].onRelease = a;
}


lexo2000 03.04.2008 09:14

2Kinley - а через this._name?

udaaff 03.04.2008 09:49

Цитата:

Сообщение от Netter2007
Вот, я вспоминал как э то делается, думал просто указать через запятую, типа
Код:

mc1,mc2,mc3.onRollOver=function():String { return "Я ем криветку"; }
ошибку в синтаксисе не выдает, но и не работает.
буду делать так как посоветовал Tiger
Спасибо

Ошибки в синтаксисе и нету. Ошика в семантике.
Из хелпа:
Цитата:

, comma operator

(expression1 , expression2 [, expressionN... ])

Evaluates expression1, then expression2, and so on. This operator is primarily used with the for loop statement and is often used with the parentheses () operator.
Код:

for (i = 0, j = 0; i < 3 && j < 3; i++, j+=2) {
 trace("i = " + i + ", j = " + j);
}
// Output:
// i = 0, j = 0
// i = 1, j = 2

Код:

var v:Number = 0;
v = (4, 5, 6);
trace(v); // output: 6




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

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