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

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

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

Регистрация: Jun 2010
Сообщений: 97
По умолчанию Код паузы звука не работает!

Код AS1/AS2:
var sound:Sound = new Sound();
sound.loadSound("Van.mp3", true);
sound.start(loop);
 
var pausa:Boolean;
 
pause_btn.onRelease = function(){
  s_pos = sound.position;
  pausa = true;
  sound.stop();
  }
 
play_btn.onRelease = function(){
  if(pausa){sound.start(s_pos);}
  else{sound.start();}
  pausa = false;
  }
После нажатия на кнопку воспроизведения , звук начинает проигрываться сначала, а не оттуда где был остановлен? А бывает вобще не проигрывается. Где я ошибаюсь?

Старый 28.03.2011, 19:52
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
1. Ошибка в несоответствии единиц измерения.

secondOffset должен быть в секундах
Код:
start (Sound.start method)
public start([secondOffset: Number], [loops: Number]) : Void
А позиция считывается в миллисекундах:
Код:
Sound.position property
public position :  Number [read-only]
The number of milliseconds a sound has been playing...
Поэтому:
Код AS1/AS2:
var sound:Sound = new Sound();
sound.loadSound("Van.mp3", true);
sound.start(); // у вас тут было написано loop  - к чему это было? Так ничего не зациклется.
 
var pausa:Boolean ;
 
pause_btn.onRelease = function()
{
	s_pos = sound.position ;
	pausa = true ;
	sound.stop();
	trace(sound.position);
};
 
play_btn.onRelease = function()
{
	if(pausa)
	{
		sound.start(s_pos/1000); //нюанс тут!
	}
	else
	{
		sound.start();
	}
	pausa = false ;
};

3. Далее, некторые нюансы в использовании методов Sound.

3.1. Это можно не писать:
Код AS1/AS2:
sound.start();
(и даже вредно), еслиу вас true в
Код AS1/AS2:
sound.loadSound("Van.mp3", true);
, то есть звук потоковый.
Звук начнет играть сам. Иначе старт может произойти два раза.

3.2. И наконец, если вам нужно зациклить звук, то конечный код будет такой:
Код AS1/AS2:
var sound:Sound = new Sound();
sound.loadSound("Van.mp3", true);
sound.onSoundComplete = function () 
{
	sound.start();
};
 
var pausa:Boolean ;
 
pause_btn.onRelease = function()
{
	s_pos = sound.position;
	pausa = true ;
	sound.stop();
	trace(sound.position);
};
 
play_btn.onRelease = function()
{
	if(pausa)
	{
		sound.start(s_pos/1000);
	}
	else
	{
		sound.start();
	}
	pausa = false ;
};
PS.
На будущее - не склеивайте уж так ваш код скобочка к скобочке - самим же неудобно, причесывать сперва приходится, чтобы разобраться.
По типу
Код AS1/AS2:
if(pausa){sound.start(s_pos);}
else{sound.start();}
Компилятору пофиг такое уплотнение, и производительности это не прибавит, крутизна кода от этого сомнительная, а читабельность кода никакая, тем более для потенциальных советчиков.
Если хотите сократить, так иногда тернарный оператор годится:
Код AS1/AS2:
play_btn.onRelease = function()
{
	pausa ? sound.start(s_pos/1000) : sound.start() ;
	pausa = false ;
};
__________________
Идите первым!


Последний раз редактировалось mooncar; 28.03.2011 в 20:23.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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