PDA

Просмотр полной версии : Как узнать имя МувиКлипа?


sa old
05.11.2006, 01:53
Здравствуйте! Не рассчитала свои силы, приходится опять спрашивать у вас.

for (var l = 0; l<linijelengde; l++) {
a++;
_root.createEmptyMovieClip("knapp"+a, a);
// knapp heter
var SS = _root["knapp"+a];
// lenke movieclip enkelt
if (linje[l] == "h" or linje[l] == "v") {
SS.attachMovie("enkelt", "enkelt", a);
SS.createEmptyMovieClip("cont"+a, 666);
if (a<10) {
III = "00";
} else {
III = "0";
}
// Oh, Takk for Miramax, Kuzen og iNils
SS["cont"+a].loadMovie("PreView/"+III+a+".jpg", ["cont"+a]);
SS.onRollOver = function():Void {
this.onEnterFrame = function() {
if (60<this._alpha) {
this._alpha -= 10;
}
};
};
SS.onRollOut = function():Void {
this.onEnterFrame = function() {
if (100>this._alpha) {
this._alpha += 3;
}
};
};
SS.onPress = function() {
trace(this);
};
}
if (linje[l] == "n") {
SS.attachMovie("ikke", "ikke", 1);
}


где SS = knapp1, knapp2,... В строке


SS.onPress = function() {
trace(this);
};


я хотела бы выкристаллизировать порядковый номер мувиклипа. Трейс выдает следующее:


_level0.knapp1
_level0.knapp2
_level0.knapp3
_level0.knapp4
_level0.knapp5
_level0.knapp6


Как можно поставить какой то обработчик, чтобы я получала чистые 1, 2, 3,... ?

И еще, раз уж я завела пост - чувствую, что писать this.onEnterFrame = function() {} в таких количествах неграмотно, но пока не могу придумать альтернативу, так что не смейтесь.

Kikasso
05.11.2006, 02:04
Самое простое - новорожденому клипу присобачиваешь номер
SS.num = 1; //2,3,4,35 и т.д.тогда
SS.onPress = function() {
trace(this.num);
};

вариант второй - надо взять имя клипа, отрезать от него первые пять буков, то что осталось конвертнуть в Number - много больше забот.
P.S. Для модераторов - можно я это в код не буду обводить?

iNils
05.11.2006, 02:09
Не обводится только код в одну строку (без другого текста) или когда код используется как упоминание о чем идет речь.

sa old
05.11.2006, 02:23
Спасибо Kikasso. Ой как замечательно все работает! Я в работе назойливая — хотела узнать, стоит ли (можно ли) мне избавляться от this.onEnterFrame = function() {}, или не стоит (невозможно, нельзя)?

Kikasso
05.11.2006, 03:51
Можно, конечно, если у тебя функция без параметров.
function primer(){
trace ("primer");
}
_root.onEnterFrame = primer;

Если тебе надо передавать параметры - это не прокатит.
С другой стороны, параметры можно брать откуда - то еще:
function primer2(){
var i = this.i || 0;
trace("primer "+ i);
i++;
this.i = i;
}
_root.onEnterFrame = primer2;

etc
05.11.2006, 14:52
Kikasso, есть ещё Proxy, DelegateExt, там можно и передать параметры в такой строке.

Kikasso
06.11.2006, 04:11
Kikasso, есть ещё Proxy, DelegateExt, там можно и передать параметры в такой строке.
Первый раз слышу.. Поиск.. А, вот... То есть у себя в кармане мне параметр брать не стоит, а надо импортировать пару классов, которые создадут мне специальный карман и туда положат то что мне надо? Это проще?
Вообще спасибо - если карманы пришиты, а бывает и такое, теперь я знаю где копать.
Вернемся к сабжу. На сцене мувиклип, который никак не называется.
Код в первом кадре мувиклипа.

this.onRelease = function(){
trace( _name.substr(_name.indexOf("e")+1) );
}
Копируешь клип несколько раз (ctrl + мышкой в сторону).
При компиляции флеш обзовет твои клипы instance1, instance2. "instance" кончается на "е". Что будет в output? То, что после "е" и до конца строки. Принцип ясен.

etc
06.11.2006, 04:24
Ну в конкретно данном случае можно и не юзать. Но если подобная ситуация возникает более двух раз — имеет смысл.

Kikasso
06.11.2006, 04:32
etc, спасибо за наводку - я как раз переучиваюсь. Это актуально.