Показать сообщение отдельно
Старый 19.10.2009, 23:57
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 10  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Автор, часто бывает удобнее задать для какого-то действия функцию, и ее вызывать из разных мест - например, либо по нажатию кнопки, либо по какому-то другому событию. Например.
Код AS1/AS2:
function doIt() {  //эта функция делает полупрозрачными сто объектов mc1....mc100
	for (i = 1; i <= 100; i++) {
		_root['mc' + i]._alpha = 50;
	}
}
 
btn.onPress = doIt; //функция doIt сработает при нажатии на кнопку btn
btn.onRelease = doIt; //функция doIt сработает также при отпускании кнопки btn
 
text_tf.onChanged = doIt; //функция doIt сработает при вводе нового символа в текстовое поле text_tf
 
//постоянно проверяем изменение триггера val, если = 1, также сработает функция doIt 
this.onEnterFrame  = function() { 
  if (val == 1) {
    doIt();
  }
}
Другой пример. Назначаем обработчики onRelease для 20-ти кнопок в цикле:
Код AS1/AS2:
function goThere () {
       _root['mc' + this.num].gotoAndPlay(50); 
}
 
for (i = 1; i <= 20; i++) {
        this['btn' + i].num = i;
	this['btn' + i].onRelease = goThere;
}
//this внутри функции goThere указывает на соответствующую кнопку, для которой данная функция работает, то есть btn1... btn20
//поэтому this.num  тут будет равно последовательно btn1.num... btn20.num, то есть 1....20
Третий пример. Меняем поведение кнопки:
Код AS1/AS2:
function doOne () {
       trace('Делай раз!')
}
 
function doTwo () {
       trace('Делай два!')
}
 
//В одной части кода:
btn.onRelease = doOne;
....
//Где-то в другом месте, при других обстоятельствах, но для той же кнопки:
btn.onRelease = doTwo;
 
//либо:
if (val == 0) {
       btn.onRelease = doOne;
} 
else {
      btn.onRelease = doTwo;
}
При такой записи код становится гибче, удобнее для модернизации, переноса в другие места и т.д.

И еще. Поймите простую вещь - вот здесь:
Код AS1/AS2:
btn.onPress = doIt;
в правой части не определяется никакая функция, а только для события onPress указываем ссылку на функцию doIt по ее имени.
Эта запись сродни
Код AS1/AS2:
a = b;
То есть присваиваем одной переменной ссылку на другую.


Последний раз редактировалось mooncar; 20.10.2009 в 00:26.