PDA

Просмотр полной версии : 9 случайных погружаемых звуков при кликании мышкой на кнопку


Bob SurikeN
02.06.2008, 22:03
Я - полный чайник. Программирую воспроизведение случайных звуковых файлов (или флеш-клипов). Я нашёл похожий код, но в неём есть лишняя функция - автоматическое воспроизведение подгружаемых клипов через случайные промежутки времени. Мне же нужно посто, чтобы нарисованный чёртик при кликании по нему мышкой говорил в хаотичном порядке 9 фраз. Вот тот похожий код (с поправкой на мои звуки):

_global.randRange = function(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min;
return randomNum;
};


function init ():Void {
setInterval (this, "load", 5000);
}


function load ():Void {
ti = _global.randRange(1, 9);
d = _global.randRange(-1, 1);
if (d>=0) {
di = 1;
} else {
di = -1;
}

this.createEmptyMovieClip("t_mc", 10);
loadMovie("http://anti-radio.ru/swf/d"+ti+".swf", t_mc);
t_mc._x = 360;
t_mc._y = 158.7;
t_mc._xscale = di*100;
};




init();

bt.onRollOver = function() {
t_mc.stop();
};

bt.onRollOut = function() {
t_mc.play();
};

Этот код стоит у меня на кадре, к которому мы подходим и играем основной клип при клике мыши. Что нужно убрать/изменить в коде, чтобы чёртик произносил 9 фраз в хаотичном порядке?

Спасибо.

iNils
02.06.2008, 22:22
Для оформления своего кода надо использовать теги .

Wolsh
02.06.2008, 22:58
Звукам в библиотеке проставьте Linkage в виде цифр 0-8
Чертик - devil_mc
devil_mc.onPress = function () {
s.stop();
delete s;
var s:Sound = new Sound();
s.attachSound(Math.floor(Math.random()*9).toString());
s.start();
}

Bob SurikeN
02.06.2008, 23:28
ок, понял.

спасибочки! пробую...

Я, наверно, не совсем доходчиво спросил.
2 вопроса:
1. куда вставить этот код, если при нажатии на чёрта-кнопку (он же devil_mc) клип должен вставать на определённый кадр (61) и играть с этого места вместе со случайным звуком?
2. звуки в виде файлов d1.swf...d9.swf - подгружаемые, то есть это отдельные файлы вне основного клипа.

Vektor
03.06.2008, 01:33
Ответ, на Самый певый вопрос.
//звуки добавиш сам, не забуть в Properties звука поставить галочку, как для Мувика.
//Названия звука 1-9.
var aSound:Array = ["1", "2", "3", "4", "5", "6", "7", "8,", "9"];
var nS:Number;
this.onMouseDown = function() {
var mySound:Sound = new Sound();
nS = Math.floor(Math.random()*aSound.length);
mySound.attachSound(aSound[nS]);
mySound.start();
aSound.splice(nS,1);
this.onEnterFrame = function() {
if (mySound.duration == mySound.position) {
nS = Math.floor(Math.random()*aSound.length);
mySound.attachSound(aSound[nS]);
mySound.start();
aSound.splice(nS,1);
if (aSound.length == 0) {
delete onEnterFrame;
}
}
};
};
В следующий раз, формулируй ? правильно.

Wolsh
03.06.2008, 02:01
2. звуки в swf... Флэш давно уже нормально грузит и играет мп3 например. Причем потоковый, т.е. не надо ждать полной загрузки файла. Ну типа так
devil_mc.onPress = function () {
(new Sound).stop();
var s:Sound = new Sound();
a = Math.floor(Math.random()*9).toString()
s.onLoad = function(success:Boolean) {
if (success) {
s.start(0,1);
_root.gotoAndStop(61);
}
}
s.loadSound(a+".mp3", true);
}Звуки назвать 0.mp3 - 8.mp3 и положить в ту же директорию.
Ну или изменить в коде строчку на реальный URL по типуs.loadSound("http://www.mysite.com/welcomedevil_sounds/"+a+".mp3", true);

Bob SurikeN
03.06.2008, 02:10
Спасибо, Wolsh! Я сделал пока звуки внутри флешки: АНТИ-радио (http://anti-radio.ru).
Завтра буду разбираться со вторым вариантом.
Ещё раз спасибо, выручил, дружище! Я вообще-то музыкант, а не флешер )))))

Bob SurikeN
03.06.2008, 02:15
Спасибо, Vektor!

Vektor
03.06.2008, 08:48
Немного изменил код, так правильней.
//звуки добавиш сам, не забуть в Properties звука поставить галочку, как для Мувика.
//Названия звука 1-9.
var aSound:Array = ["1", "2", "3", "4", "5", "6", "7", "8", "9"];
var nS:Number;
this.onMouseDown = function() {
var mySound:Sound = new Sound();
nS = Math.floor(Math.random()*aSound.length);
mySound.attachSound(aSound[nS]);
mySound.start();
aSound.splice(nS,1);
var _interval = setInterval(fSound, mySound.duration);
function fSound() {
nS = Math.floor(Math.random()*aSound.length);
mySound.attachSound(aSound[nS]);
mySound.start();
aSound.splice(nS,1);
if (aSound.length == 0) {
clearInterval(_interval);
_interval = null;
}
}
};

Bob SurikeN
04.06.2008, 12:22
Wolsh! Этот код работает почему-то только пока флешка не вставлена в htm. Может быть что-то в свойствах объекта?

devil_mc.onPress = function () {
(new Sound).stop();
var s:Sound = new Sound();
a = Math.floor(Math.random()*9).toString()
s.onLoad = function(success:Boolean) {
if (success) {
s.start(0,1);
_root.gotoAndPlay(61);
}
}
s.loadSound(a+".mp3", true);
}

Wolsh
04.06.2008, 15:03
А где звуки лежат? Там же где html & swf? Если нет, смотри вторую часть шестого поста.
Если речь о просмотре на локале в браузере, то не беспокойся - в сети всё заработает. Это настройки безопасности.