از عقب به جلو بروید !

نوشته شده توسط

مهدی خدادادی

در ۲۲ شهریور ماه سال ۱۳۸۸

یک دیدگاه

سلام .

کار با صدا یکی از مهم ترین چالش ها در محیط فلش است . سابق بر این ( قبل از 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;
 }

یک دیدگاه برای “"از عقب به جلو بروید !"”

  1. ناشناس

    در ۰۶ بهمن ماه سال ۱۳۸۸

    میشه گفت
    تمام کار رو ByteArray میکنه

    چرا در این ضمینه مقاله ای ارسال نمیکنید؟
    مرسی

دیدگاهی برای ما بنویسید