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

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

Цитата:

Сообщение от __etc
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, спасибо за наводку - я как раз переучиваюсь. Это актуально.


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

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