Просмотр полной версии : Много мувиков-одна функция
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
Спасибо
Еще вопрос, думаю по этой же теме.
У меня создается n-ное количество мувиклипов (все зависит от xml-файла). Мне надо узнать, на каком из них щелкнула мышка...
Вотъ...
Но в обоих способах, описанных выше, нужно знать, сколько всего мувиклипов...
Подскажите пожалуйста, что делать? :rolleyes:
Netter2007
02.04.2008, 19:51
Я бы раньше, до того как меня здесь научили что так уже никто не делает, прописал бы обработку событие нажатия мыши внутри мувиклипа, а по другому не знаю, сам подожду кто что скажет.
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?
Вот, я вспоминал как э то делается, думал просто указать через запятую, типа
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
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.