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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 20.01.2011, 14:28
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 11  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Пожалуйста скажите как сделать extract по таймеру, чтобы флеш не зависал и я мог поставить прелоадер.

Добавлено через 1 минуту
Вот мой класс визуализации звука
Код AS3:
package src
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Rectangle;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.net.URLRequest;
	import flash.utils.ByteArray;
 
	public class Visualizator extends Sprite 
	{
		var samples:ByteArray = new ByteArray();
		var buffer:BitmapData = new BitmapData(1024,256,true,0x00FFFFFF);
		var screen:Bitmap = new Bitmap(buffer);
		var rect:Rectangle = new Rectangle(0,0,1,0);
		var playingTime:int;
		var ratio:Number;
		var step:int;
		var sound:Sound;
		public function Visualizator(_sound:Sound):void 
		{
			sound = _sound;
		}
 
		public function show():void
		{
			addChild(screen);
 
			buffer.fillRect( buffer.rect, 0 );
			var extract:Number = Math.floor ((sound.length/1000)*44100);
			playingTime = sound.length;
			ratio = playingTime / buffer.width;
			var lng:Number = sound.extract(samples,extract);
			samples.position = 0;
			step = samples.length / 4096;
			do
			{
				step--;
			}
			while ( step % 4 );
 
			var left:Number;
			var right:Number;
			var mono:Number;
 
			for (var c:int = 0; c < 4096; c++)
			{
				rect.x = c / 4;
				left = samples.readFloat() * 128;
				right = samples.readFloat() * 128;
				mono = Math.abs(Math.max(left, right)) + Math.abs(Math.min(left, right));
 
				samples.position = c * step;
 
				if (left > 0)
				{
					rect.y = 128 - left;
					rect.height = left;
				}
				else
				{
					rect.y = 128;
					rect.height =  -  left;
				}
 
				buffer.fillRect( rect, 0xFF5d96da );
 
				if (right > 0)
				{
					rect.y = 128 - right;
					rect.height = right;
				}
				else
				{
					rect.y = 128;
					rect.height =  -  right;
				}
 
				buffer.fillRect( rect, 0xFF5d96da );
			}
			screen.width = 930;
			screen.height = 90;
			dispatchEvent(new Event(Event.COMPLETE));
		}
	}
}
Добавлено через 1 час 11 минут
Ну, что никто не знает как сделать? Срочно надо. Готов заплатить.


Последний раз редактировалось TWETTI; 20.01.2011 в 14:30.
Создать новую тему   Часовой пояс GMT +4, время: 00:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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