سلام .
کار با صدا یکی از مهم ترین چالش ها در محیط فلش است . سابق بر این ( قبل از AS3 ) فلش توانایی های محدودی در کار با فایل های صوتی داشت و فایل های صوتی یکی از دردسر های ما بود . ولی الان این نقطه قوت فلش شده و در تست ها و مقایسه های مختلفی که انجام شده همیشه کار با صدا یکی از مزایای رقابتی برای فلش بوده است .
چطوره نمونه ای از این قابلیت را اینجا بررسی کنیم تا قدرت AS3 در زمینه صدا خودش رو نشون بده . می خواهیم یک فایل mp3 رو از آخر به اول پخش کنیم . برای اینکار شما باید از قدرت FlashPlayer10 استفاده کنید و سایر نسخه ها این قابلیت رو پشنیبانی نمی کنند .
در این قابلیت جدید که به وسیله متد Sond.extract() به فلش اضافه شده به شما اجازه میده که یک کلمه و یا یک تکه از یک آهنگ رو قبل از رفتن به کارت صدا کنترل کنید و در هر جهت از فایل صوتی که خواستید حرکت کنید .
کد زیر بروی یک بسته صوتی ۸ bytes که ۴ bytes در شروع کانال داره قابل اجرا است به صور دقیق تر یک فایل صوتی ۴۴۱۰۰ کیلو هرتز . ممکن است با چنین محدودیت هایی به مشکل بخورید اما نگران نشوید . این یک شروع لذت بخش است
var ns:Sound;
var position:int;
var max:int;
var speed:int = 4096;
c.b1.addEventListener(MouseEvent.CLICK, function(){speed=-8192;});
c.b2.addEventListener(MouseEvent.CLICK, function(){speed=-4096;});
c.b3.addEventListener(MouseEvent.CLICK, function(){speed=4096;});
c.b4.addEventListener(MouseEvent.CLICK, function(){speed=8192;});
lclip.visible = false;
c.visible = false;
loadmusic.addEventListener(MouseEvent.CLICK, init);
function init(e:Event):void
{
position = 0;
loadmusic.visible = false;
lclip.visible = true;
ex = new Sound(new URLRequest("col.mp3"));
ex.addEventListener(Event.COMPLETE, onComplete);
ns = new Sound();
ns.addEventListener(SampleDataEvent.SAMPLE_DATA, onData);
}
function onComplete(e:Event):void
{
lclip.visible = false;
c.visible = true;
max = 44100 * (ex.length/1000) - 4096;
position = max;
ns.play();
}
function onData(e:SampleDataEvent):void
{
var bytes:ByteArray = new ByteArray();
ex.extract(bytes, 4096, position);
e.data.writeBytes(bytes);
position += speed;
if(position < 0)
position = max;
else if(position > max)
position = 0;
}
در ۰۶ بهمن ماه سال ۱۳۸۸
میشه گفت
تمام کار رو ByteArray میکنه
چرا در این ضمینه مقاله ای ارسال نمیکنید؟
مرسی