Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.12.2008, 01:07
MANN вне форума Посмотреть профиль Отправить личное сообщение для MANN Найти все сообщения от MANN
  № 1  
Ответить с цитированием
MANN
 
Аватар для MANN

Регистрация: Jul 2008
Адрес: USofA
Сообщений: 42
По умолчанию составить подобное в одну функцию

есть пять кнопок k1, k2, k3, k4, k5; каждая из них при нажатии загружает мп3 файл b1.mp3; b2.mp3; b3.mp3; b4.mp3; b5.mp3 соответсвенно
Как сделать что бы была одна функция и работала на пять кнопок?

вот у меня неработающий код
Код:
for (var z:Number = 1; z<=5; z++) {
	["k"+z].onPress = function() {
		trace(z);
		stopAllSounds();
		ns = new Sound();
		ns.loadSound("b"+z+".mp3",true);
	};
}
самое что мне не понятно это: почему в output окне z = 6 ??
помогите разобратся плз

Старый 28.12.2008, 01:51
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 2  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Блин не работают кнопки [code],
Код:
for(i=0;i<5;i++){
var mc = _root["k"+(i+1)];
mc.onPress = function(){
trace(this);
}
}
[iNils: Наверно потому, что надо ставить закрывающий тег]
__________________
Я просто добрый шутник.


Последний раз редактировалось iNils; 28.12.2008 в 02:45.
Старый 28.12.2008, 01:53
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 3  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Интересно, при нажатии на которую кнопку trace выдает вам 6?

А вообще:
Код AS1/AS2:
function sayMyNumber(mc:MovieClip){
	trace(mc._name.slice(7))// потому что в слове button_ 7 букв
}
for(i=0; i<5;i++){
	var butt:MovieClip=this.attachMovie("butt", "button_"+i, this.getNextHighestDepth())// обратите внимание на новое имя
	butt._x=150
	butt._y=30+i*(butt._height+30)
	this.butt.onPress=function(){
		sayMyNumber(this)
	}
}

UPD
у меня работают =))
__________________
...вселенская грусть

Старый 28.12.2008, 03:50
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Интересно, при нажатии на которую кнопку trace выдает вам 6?
На любую, естественно)) Подумайте, MANN, чему равна переменная z после того, как Ваш цикл выполнится? Точно, 6. Кнопка со всей честностью и выводит 6.
Код:
for (var z:Number = 1; z<=5; z++) {
        var b:MovieClip = this["k"+z];
        b.id = z;
	b.onPress = loadSoundByID;
}
function loadSoundByID() {
	trace(this.id);
	stopAllSounds();
	ns = new Sound();
	ns.loadSound("b"+this.id+".mp3",true);
};
__________________
Reality.getBounds(this);

Старый 28.12.2008, 16:27
MANN вне форума Посмотреть профиль Отправить личное сообщение для MANN Найти все сообщения от MANN
  № 5  
Ответить с цитированием
MANN
 
Аватар для MANN

Регистрация: Jul 2008
Адрес: USofA
Сообщений: 42
Благодарю;
Всё работает, осталось понять принцип работы кода^^

Старый 28.12.2008, 17:41
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Какого из?))) На всякий случай я о своем:
1.Заводим итератор z и запускаем цикл... Перед каждым витком цикла выполняется итерация z++. Надо помнить, что такая запись сначала возвращает z, а уже потом увеличивает ее значение на 1, в отличие от записи ++z))) Итак, когда последний виток цикла запускается, для него z не может быть больше пяти, но вне функции z=6.
Эту 6 Вам и выводил трейс.
2. Заводим переменную b под тип данных МувиКлип. В нее записываем ссылку на this["k"+z] - одну из Ваших кнопок.
3. У этой кнопки заводим свойство id и записываем в него значение итератора. Кнопка теперь будет его "помнить".
4. В качестве обработчика события нажатия указываем кнопке функцию loadSoundByID. Собственно, тут синтаксис в точности как в записи b.id=z
При нажатии на кнопку будет вызвана функция loadSoundByID, и она получит ссылку на "вызвавшего" (такова специфика обработчиков) - Вашу кнопку, которая внутри функции будет доступна как this . Cоответственно, ее id будет доступен как this.id
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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