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

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

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

Регистрация: Jul 2014
Сообщений: 9
По умолчанию Загрузка звукового файла

Совсем не силен в actionscript, но срочно потребовалось следующее: есть несколькостраничный swf-каталог (кадры-страницы переводятся вручную), потребовалось на каждой странице разместить кнопку вкл-выкл, после нажатия которой проигрывался mp3 файл, на каждой странице разный. На первой странице изобразил следующий код, вроде бы все норм, играет:

Код AS1/AS2:
import flash.net.URLRequest;
import flash.media.Sound;
import flash.media.SoundChannel;
 
var loadSnd: URLRequest = new URLRequest("1.mp3");
var thisSnd:Sound = new Sound();
var sndTrans:SoundChannel = new SoundChannel();
 
thisSnd. load(loadSnd);
 
bt_play.addEventListener(MouseEvent.CLICK, playf);
 
function playf(e:MouseEvent):void {
sndTrans = thisSnd.play();
bt_play.visible = false;
bt_stop.visible = true;
}
 
bt_stop.addEventListener(MouseEvent.CLICK, stopf);
 
function stopf(e:MouseEvent):void {
sndTrans.stop();
bt_play.visible = true;
bt_stop.visible = false;
}
Дальше дело - ступор, второй кадр сделать не могу, либо играет то же самое, либо вообще ничего. В данный момент попробовал ввести тот же код с заменой функций:

Код AS1/AS2:
import flash.net.URLRequest;
import flash.media.Sound;
import flash.media.SoundChannel;
 
var loadSnd2: URLRequest = new URLRequest("2.mp3");
var thisSnd2:Sound = new Sound();
var sndTrans2:SoundChannel = new SoundChannel();
 
thisSnd. load(loadSnd);
 
bt_play2.addEventListener(MouseEvent.CLICK, playf);
 
function playf2(e:MouseEvent):void {
sndTrans2 = thisSnd.play();
bt_play2.visible = false;
bt_stop2.visible = true;
}
 
bt_stop2.addEventListener(MouseEvent.CLICK, stopf);
 
function stopf2(e:MouseEvent):void {
sndTrans2.stop();
bt_play2.visible = true;
bt_stop2.visible = false;
}
При сборке ошибку не выдает, но при выводе ничего не играет, а пишет:
Цитата:
Неправильный порядок вызова функций, или предыдущий вызов был неуспешным.
at flash.media::Sound/_load()
at flash.media::Sound/load()
Силами одного flash сделал бы легче легкого, но в данный момент требуется реализовать это именно программным методом(


Последний раз редактировалось Zombie; 19.07.2014 в 01:01.
Старый 19.07.2014, 03:39
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Двоечку попробуйте.
thisSnd2. load(loadSnd);
sndTrans2 = thisSnd2.play();
bt_play2.addEventListener(MouseEvent.CLICK, playf2);
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 20.07.2014, 15:24
Zombie вне форума Посмотреть профиль Отправить личное сообщение для Zombie Найти все сообщения от Zombie
  № 3  
Ответить с цитированием
Zombie

Регистрация: Jul 2014
Сообщений: 9
Спасибо, прогресс есть - теперь все без ошибок, кроме одного НО: во 2-м кадре и далее постоянно играет mp3, который должен быть в 1-м кадре, причем в new URLRequest("...mp3"); можно написать любой адрес, даже не существующий, все равно играет один и тот же.

Код AS1/AS2:
import flash.net.URLRequest;
import flash.media.Sound;
import flash.media.SoundChannel;
 
var loadSnd2: URLRequest = new URLRequest("2.mp3");
var thisSnd2:Sound = new Sound();
var sndTrans2:SoundChannel = new SoundChannel();
 
thisSnd2. load(loadSnd);
 
bt_play2.addEventListener(MouseEvent.CLICK, playf2);
 
function playf2(e:MouseEvent):void {
sndTrans2 = thisSnd2.play();
bt_play2.visible = false;
bt_stop2.visible = true;
}
 
bt_stop2.addEventListener(MouseEvent.CLICK, stopf2);
 
function stopf2(e:MouseEvent):void {
sndTrans2.stop();
bt_play2.visible = true;
bt_stop2.visible = false;
}
Добавлено через 20 минут
Ура, дошло! Еще тут двойку надо thisSnd2. load(loadSnd2);

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

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

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


 


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


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