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

_SAM_ 27.02.2008 14:08

Присваевание похожего кода кнопкам.
 
Здравствуйте.

У меня есть кнопки : lamp_1, lamp_2, lamp_3...
Я исплльзую их так:

Код:

lamp_1.onPress = function () {
dvigat ("lamp_1");
}

lamp_2.onPress = function () {
dvigat ("lamp_2");
}

lamp_3.onPress = function () {
dvigat ("lamp_3");
}

Как можна уменшить этот код?

vladius 27.02.2008 14:35

мне кажется так можно, может есть вариант и получше - неуверен.

Код:

for (var name in this) {
                if (typeof (this[name]) == "object") {
                        this[name].onRollOver = function() {
                                              currButton = GetButtonID(this._name)
                                              dvigat ("lamp_"+currButton );
                                            }
                        }
}


function GetButtonID(str) {
        return str.slice(5, str.length);
}


Molecula 27.02.2008 14:46

2 vladius, экстремальный вариант.
Циклы используем, что же ещё:
Код:

var j:Number =0;
var len:Number = 4;
while(j<len){
this['lamp'+j].__id=j;
this['lamp'+j].onPress=someFunc;
j++
}
function someFunc(){
trace(this.__id);
}


_SAM_ 27.02.2008 17:20

Спасибо!
Помогли =)

_SAM_ 19.03.2008 04:12

Я юзаю этот код, всё ок, но до сих пор не пойму
Код:

this['lamp'+j].__id=j;
Что тут происходит?

Mr. Fixit 19.03.2008 04:56

Вы создаете свойство у своего мувиклипа, и присваиваете ему уникальный номер.

- Почему мы можем создать свойство?
- Потому что, класс MovieClip is dynamic(динамический).

divinus 19.03.2008 12:01

Molecula, можно еще проще ;)
Код:

var len:Number = 4;
while(len--){
this['lamp'+len].__id=len;
this['lamp'+len].onPress=someFunc;
}
function someFunc(){
trace(this.__id);
}


etc 19.03.2008 12:56

Цитата:

Сообщение от divinus
Molecula, можно еще проще ;)
Код:

var len:Number = 4;
while(len--){
this['lamp'+len].__id=len;
this['lamp'+len].onPress=someFunc;
}
function someFunc(){
trace(this.__id);
}


B правильнее:
Код:

var len = 4;
while (len--) {
    var lamp = this['lamp'+len];
    lamp.__id = len;
    lamp.onPress = someFunc;
}
function someFunc() {
    trace(this.__id);
}


_SAM_ 20.03.2008 02:10

спасибо =)
понял =)

Mr. Fixit 20.03.2008 05:43

Денис, а где определение типов данных? ;)


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

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