PDA

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


_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
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
Денис, а где определение типов данных? ;)

etc
20.03.2008, 10:14
Денис, а где определение типов данных? ;)
В данном случае абсолютно бессмысленно, поэтому убрано.