ببخشید که این همه طول کشید...
آخه فصل امتحاناته دیگه...
فعلا آموزشش رو شروع میکنم تا ببینیم کی تموم میشه.
اول یه فایل فلش میسازیم!
دقت کنید که فایل AS3 باشه.
بعد 32 تا نوار مشابه با نام های i0,i1,...,i31 میسازید و ردیفشون میکنید...
حالا یه آبجکت صدا میسازید. اینجوری:
PHP:
var so:Sound = new Sound();
بعد یه متغیر step میسازیم که بعدا توضیح میدم به چه کاری میاد (البته این اختیاریه)
حالا یه sound channel تعریف میکنیم.
این از کلاس های جدید as3 هست که میتونه صدا هایی که تو فلش استریم میشن رو بدست بگیره.
هر صدایی که تو فلش پلیر پخش میشه دست یه ساند چنله.
میتونید هر ساند چنل رو جدا گانه stop کنید یا به left و right ش دسترسی داشته باشید و...
حالا یه byte array تعریف میکنیم. اینم یکی از کلاس های توپ و حرفه ای توی as3 هست که برای دسترسی به byte level کولاکه. و...
PHP:
var ba:ByteArray = new ByteArray();
یه Array هم تعریف میکنیم که مقدار نهایی رو برای هم فرکانس توش داشته باشیم.
PHP:
var i:Array = new Array(32);
حالا صدای مورد نظر رو لود میکنیم. دقت کنید توی as3 دیگه همینجوری کشکی یه string نمیسازیم توش url رو بگیم.
البته این کارم یه جورایی میشه کرد. ولی درستش اینه که با url request این کار رو بکنیم:
PHP:
so.load(new URLRequest("Nimkat.mp3"));
حالا به ساند چنلمون میگیم که این so رو بگیره و پخش کنه:
و به فلش میگیم که ایونت enterframe رو به تابع render اختصاص بده. باز هم یه دقت بفرمایید.
event ها یکم manage شدن.
دیگه نمیگیم:
PHP:
addEventListener("click",...);
میایم از یه constant توی object ه event استفاده میکنیم... اینجوری:
PHP:
this.addEventListener(Event.ENTER_FRAME, render);
راستی یه متغیر هم فعلا به نام a درست کنید تا بعد...
تا اینجا کدمون اینجوری شد:
PHP:
var so:Sound = new Sound();
var step:Number = 0.05;
var sc:SoundChannel;
var ba:ByteArray = new ByteArray();
var i:Array = new Array(32);
so.load(new URLRequest("Nimkat.mp3"));
sc = so.play(0,-1);
this.addEventListener(Event.ENTER_FRAME, render);
var a:Number = 0;