Просмотр полной версии : идентификация кнопки
доброго времени суток!
проблема: из массива кнопок одна нажата, требуется определить которая и использовать ее номер в дальнейшем. Единственное, до чего додумался это что-то вроде этого:
for (a=0; a<10; a++) {
this.attachMovie("kn", "kn"+a, a);
this["kn"+a]._y = a*30;
this["kn"+a].onPress = function() {
b=String(this).substr(10)
};
}
this.attachMovie("kn", "knn", 100);
knn._x = 500;
knn.onPress = function() {
trace(b);
};
но появилась другая проблема: при подгружении фильма в другой клип, название кнопки меняется и, естественно, длина этого названия тоже...
подскажите, пожалуйста:(
Ну во-первых, имя не изменится. Это меня дома зовут Вадя, а после помещения в офис - Вадим Юрьевич. А кнопка как была kn1, так и останется. Только резать тогда уж надо имя, то есть this._name
а вообще это очень плохая практика!
Нормальной практикой является сохранить нужный параметр как собственное свойство кнопки (или клипа)
for (a=0; a<10; a++) {
var knop:MovieClip = this.attachMovie("kn", "kn"+a, a);
knop._y = a*30;
knop.ID = a;
knop.onPress = function() {
b=this.ID
};
}
this.attachMovie("kn", "knn", 100);
knn._x = 500;
knn.onPress = function() {
trace(b);
};
Для оформления своего кода, надо использовать теги .
var b:Number = null;
for (var a:Number = 0; a < 10; a++) {
var mc:MovieClip = this.attachMovie ("kn", "kn" + a, a);
mc._y = a * 30;
mc.b = a;
mc.onPress = function () {
b = this.b;
};
}
this.attachMovie ("kn","knn",100);
knn._x = 500;
knn.onPress = function () {
trace (b);
};
как-то так я бы сделал
var app:Object = this;
var arrayKnopok:Array = new Array();
function whatKnopkaIsPressed(mc:MovieClip):Void {
trace('knopka ' + mc + ' was pressed and it index is: ' + mc.num);
var pressedKnopaIndex:Number = Number(mc.num);
// some your code here like
// this.arrayKnopok[pressedKnopaIndex]
}
for (var i:Number = 0; i < 10; i++) {
this.attachMovie("kn", "kn" + i, i);
this["kn"+i]._y = i * 30;
this.num = i;
this["kn" + i].onPress = function() {
app.whatKnopkaIsPressed(this);
};
}
спасибо! Я как-то не пользовался свойством этим и подзабыл его...
кнопки - это клипы, я неправильно выразился.А Используйте клипы, они могут запоминать заданные свойства. Например, ID. как тут применить?
Wolsh, у тебя лучше получается. Объясни человеку что свойство ID ты сам придумал, так же как и я придумал свойство num.
Кстати, не знаю, насколько это считается "нормальной" практикой, но я бы сделал подкласс от MovieClip и ввел бы свойство ID. Dymanic классы зло. Последнее, естессна, относится к AS2.
UPDATE
Не успел =). goras, Вы быстрее поняли.
Ну, dimarik, Вы всерьез полагаете что goras будет прям щас писать класс?)))) Пусть потренируется пока.
Посмотрел бы я на флэш AS2 без динамического класса МувиКлип))))))) Хотя не, не стал бы я на эту гадость смотреть.
до классов я пока не дошел... но все еще впереди, а код потребовался для http://gorasoft.com.ru/kostroma
Посмотрел бы я на флэш AS2 без динамического класса МувиКлип))))))) Хотя не, не стал бы я на эту гадость смотреть.
Нормально бы посмотрел на нединамический класс MovieClip в AS2. Кстати, всегда есть способ обратиться к свойству не через дотнотэйшн: this['property']
Хоть и не совсем по теме, но раз уж здесь затронули...
В чем именно "зло" динамических классов, а то в литературе это не раз уже встречал, вот только нигде не разъясняется почему лучше их избегать?
Ошибок больше можно допустить, память под динамические классы выделяется тоже динамически, что не есть хорошо.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.