اين Ù�ارسي ساز كه به Flash Movie در سمت Client اجازه وارد كردن ØروÙ� Ù�ارسي رو ميده درواقع يك Ù�ارسي نويس كامل قراره بشه. ما اون رو به يك Compenent تبديل مي‌كنيم كه شم به راØتي بجاي Text Fieldهاي Inputتون ازش استÙ�اده خواهيد كرد. امّا ما مي‌خوايم اين كار رو با هم انجام بديم تا معني واقعيه Shared Project رو درك كنيم. همونطور كه مي‌بينيد من سورس كامل ActionÙŠ كه نوشته بودم رو به همراه Flash Movie مثال مربوطه در بخش سمت Ú†Ù¾ اضاÙ�Ù‡ كردم براي استÙ�اده از اونها طبق اين دستورالعمل ساده عمل كنيد.
1- هر دو �ايل PersianTTTFlashPack.ZIP و PersianTTTActionPack.ZIP رو از لينكهاي سمت چپ دريا�ت كنيد.
2- هر دو پكيج رو در يك دايركتوري باز كنيد و نام �ايلهاي رو تغيير نديد.
3- �ونتي كه در پكيج Flash Pack قرار داره رو نصب كنيد و �ايل FLA رو با Flash MX يا Swish باز كنيد.
شما مي‌تونيد با ويرايش Ù�ايل as. تغييرات لازم خودتون رو ايجاد كنيد، اگر Dreamweaver MX كه ويرايشگر خيلي خوبي براي Action Script هست رو نداريد مي‌تونيد همه Ù…Øتويات Ù�ايل as. رو در Ù�ريم اوّل در لايهء 2 بجاي دستور include# وارد كنيد. شما اكنون مي‌تونيد Ù�ايل FLA Ùˆ برنامه اصلي رو با Flash MX ترجمه Ùˆ Compile كنيد Ùˆ همينطور اون رو Debug كنيد. من يك Code Viewer هم در كد برنامه قرار دادم كه اگر شما برنامه Compile شده رو در خود Ù…Øيط Flash ببينيد پنجره Output كدهاي درياÙ�تي از Key Board رو به شما نشون خواهد داد Ùˆ همينطور وضعيّت كليدهايي كه مي‌شناسه مثل Shift رو هم گزارش خواهد كرد، سعي كنيد اگر بخش خاصّي براي اين برنامه مي‌نويسيد Øتماْ از راهنماهاي trace استÙ�اده كنيد تا بقيه دوستانتون هم روش كارتون رو متوجّه بشن. توجّه كنيد كه اگر در خود Flash اين برنامه رو اجرا مي‌كنيد Øتماً براي Ù�رستادن كدهاي مستقيم قبل از شروع رو تايپ روي Text Fieldتون كليك كنيد، اگر با اوّلين ØرÙ� پنجرهء Output باز شد به اين معني هستش كه Focus به اون پنجره منتقل شده Ùˆ شما بايد دوباره روي Text Field كليك كنيد، اين مشكل خارج از Ù…Øيط Flash بوقوع نخواهد پيوست، بعد از اينكه برنامه رو كامل كرديم Øتماْ براي Component نهايي بايد يك تابع در دسترسي به Focus روي Text Field طرّاØÙŠ كنيم.
Persian TrueType Typist
شما اگر كاراكترهاي Ù�ارسي Ù�ونت مورد نظرتون رو همراه Movie قرار نديد تمام Ù…Øتويات Ùˆ توابع اين Ù�ارسي نويس به 4 كيلوبايت هم نخواهد رسيد. بعد از نصب Ù�ونت Ù�ايل PersianTTTTiny.swf رو ببينيد كه تنها 4 كيلوبايت Øجم دارد. من Ù�علاً براي اين نمونه از Ù�ونتهاي Ù�ارسي ساز مريم استÙ�اده كردم، اگر از كاربران اين برنامه باشيد از كاربرد خوبش در ويندوزهاي 98 Ùˆ ME Øتماً راضي خواهيد بود، البته Editor اين برنامه چندان قدرتمند نيست ولي سازگاري اون بخاطر Ù�ونتهاش قابل قبولتر از نمونه‌هايي مثل ParWin 98 يا Ù�ارسي ساز نوين هستش. البته برنامه ويرايشگر مريم در ويندوزهاي NT Ùˆ 2000 Ùˆ XP عمل نخواهد كرد. شايد تا اينجا بدون در نظر گرÙ�تن ساير قابليّتهاي Ù�ارسي سازي كه قراره با هم بنويسيم بتونيم بگيم كه با توليد يه projector ساده Ùˆ يا يك صÙ�ØÙ‡ Web مي‌تونيم به سادگي كارهايي كه Ù�ارسي ساز مريم انجام مي‌داد رو شبيع سازي كنيم. تÙ�اوت كار در اين خواهد بود اين Ù�ارسي ساز در همه سيستمهاي عامل به درستي عمل خواهد كرد. روي تمامي كامپيوترهاي X86 يا سيستمهاي RISC با قابليّت استÙ�اده از رابطهاي ورودي استاندارد براي KeyBoard اين Ù�ارسي ساز عمل خواهد نمود.
روش درياÙ�ت كدها در اين Ù�ارسي ساز بصورت كاملاً مستقيم هستش. يعني Flash Movie شما براش مهم نيست كه OS Ú†Ù‡ كدي رو بعد از Layout كي‌برد شما قرار ميده، بلكه مهم اينه كه Ú†Ù‡ كليدي رو KeyBoard شما Ù�شار داده ميشه. استÙ�اده از اين مطلب گرچه خطوط بيشتري رو به برنامه اÙ�زوده ولي كار رو مطمئنتر كرده. به دليل استÙ�اده از متد getCode در شيء Key من براي اين كد مجبور شدم يك تابع Shift Detector بنويسم كه خودم Ù�كر مي‌كنم بخش خوبي از اين برنامه‌ست كه خيلي خوب كار مي‌كنه Ùˆ شما هم اØتمالاً در تغييرات بعديتون اون رو تغيير نخواهيد داد Ùˆ خيلي ساده در صورت نياز كليدهاي تركيبي Ctrl Ùˆ Alt رو اضاÙ�Ù‡ خواهيد كرد.
امّا برنامه شايد ظاهراً بلند Ùˆ بالا باشه ولي هنوز كامل نيست، دو بخش اصلي كه مي‌خوايم با كمك هم بنويسيمشون يكي نوشتن قابليّت نوشتار اعداد از Ú†Ù¾ به راست هستش كه برنامه خودش بتونه تشخيص بده كي از اعداد استÙ�اده كنيم Ùˆ كي نكنيم. ببينيد نكته‌اي كه براي من در نوشتن اين برنامه خيلي مهم بوده، سرعت اجراي اون هستش، اين برنامه رو به چندين روش مي‌شد نوشت، براي توليد كدها مي‌تونسم معادلهاي اونها رو روي KeyBoard استÙ�اده كنم كه كارم خيلي راØتتر مي‌شد ولي اگر Performance كار كردن نوشتاري رو ببينيد خواهيد ديد كه راضي كننده خواهد بود. با توجّه به اينكه شما در آينده از اين Ù�ارسي نويس به عنوان يكي از اجزاي Ù�رمتون استÙ�اده خواهيد كرد بايد توجّه داشته باشيم كه كارايي اون روي ساير اجزاي Movie شما تأثير نگذاره. سعي كنيد اين رو در نظر داشته باشيد كه اگر مي‌خوايد قابليّت تازه‌اي به اين برنامه بياÙ�زاييد Øتماً Ù�اكتور سرعت رو درنظر بگيريد. قسمت بعدي كه خيلي جالب خواهد بود اÙ�زودن قابليّت تايپ Ù�ارسي Ùˆ انگليسي توأماً است. متأسّÙ�انه Ù�ونتهاي Ù�ارسي ساز مريم تنها ØروÙ� Ù�ارسي رو شامل مي‌شن Ùˆ شما نمي‌تونيد از ØروÙ� انگليسي در آنها استÙ�اده كنيد، براي اين كار نياز به تغيير Ù�ونت داريم، كاري كه اصلاً استاندارد نيست ولي Ù�علاً مجبوريم.
در نهايت اين برنامه يك باگ بزرگ داره. نمونهء زير رو درنظر بگيريد.
كلمه‌اي مثل "اينترنت" رو تايپ كنيد، اين كلمه يك كلمهء تنهاست، Øالا دونه دونه با Backspace ØروÙ� رو پاك كنيد، مي‌بينيد هر ØرÙ� بعد از پاك شدن ØرÙ� بعدش به ØرÙ� بزرگ تبديل ميشه كه خيلي جالب به نظر مياد Ùˆ شما مي‌تونيد از همونجا دوباره به تايپ ادامه بديد. امّا Øالا كلمه‌اي رو در نظر بگيريد كه دو قسمتي باشه يا اصلاً جمله‌اي كه Space توش بكار رÙ�ته باشه، به روش كار كليد BackSpace در پاك كردن ØروÙ� بعد از Space توجّه كنيد، مشكل رو متوجّه شديد؟ من مي‌دونم اشكال كجاست. كد زير رو كه كد كليد BackSpace هست نگاه كنيد.
textF=textF.substr(1);
if(isStickable(textF.charAt(0))){
if(isStickable(textF.charAt(1))){
//small middle
textF=toCapitalSticked(textF.charAt(0))+textF.substr(1);
}else{
//small first
textF=toCapitalLonely(textF.charAt(0))
+textF.substr(1);
}
}
اشكال در عملكرد (textF.substr(1 است. substr از ØرÙ� شماره 1 String ما رو شماره‌گذاري مي‌كنه ولي متأسّÙ�انه اگر اوّلين ØرÙ� از سمت Ú†Ù¾ Space باشه اين ØرÙ� جزو شماره گذاريهاي به Øساب نخواهد اومد، استÙ�اده از subString بجاي substr هم مشكل رو برطرÙ� نخواهد كرد. اينطور عملكردن باعث ميشه كه هنگام وجود داشتن Space در انتهاي خط Ù�ارسي با Ù�شاردادن كليد BackSpace بجاي يك ØرÙ� 2 ØرÙ� از String پاك بشه Ùˆ شماره‌گذاريهاي غلط از آب دربياد Ùˆ ØرÙ�ÙŠ كه بايد به Ù�رم بزرگش تبديل بشه درست عمل نكنه.
اين مطمئنّا تنها Shared Project ما نخواهد بود، كاركردن ما تØت همين كلمهء "ما" يعني قدرت چند برابر، من سعي كردم Øسن نيّتم رو با قراردادن متن كامل برنامه‌ام نشون بدم Ùˆ مطمئن هستم كه شما هم كمك خواهيد كرد تا اين برنامه رو كامل كنيم Ùˆ به نام همه اونهايي كه توش كمك كردند روي يه جاي Public براي در دسترس قراردادن مردم بگذاريم.
من بسيار خوشØال مي‌شم اگر روي اين دو مورد Ù�كر كنيد Ùˆ همينطور اگر علاقه‌مند به اÙ�زودن قابليّتهاي جديد به Ù�رم اصلي Ù�ارسي نويس هستيد Øتماً دست بكار بشيد ولي توجّه كنيد كه در Øال Øاضر ما ميخوايم بخش اصلي رو تكميل كنيم Ùˆ استÙ�اده از اين Ù�ارسي نويس براي يك Component يا قابليّتهاي جنبي اي كه ميشه ازش استÙ�اده كرد در پلّه‌هاي بعدي قرار دارند، انتظار يه كار Ù�عّال از دوستاني كه روي Action Scripting Ù�عّاليت كردند دارم تا بتونيم اين اشكالي تا امروز هيچ كسي براش دست بكار نشده رو ØÙ„ كنيم. بجز دو سه موردي كه عنوان كردم نكتهء اصلي‌اي رو هم در نظر بگيريد، من براي نمونه از Ù�ونتهاي Ù�ارسي نويس مريم استÙ�اده كردم، Ù�ونتهاي نوين گرچه قابل استÙ�اده بودند ولي هم Ù…Øدود Ùˆ هم غير UnicodeÙŠ بودند Ùˆ استÙ�اده از اونها نياز به استÙ�اده از كدهاي مستقيم در Ù�ايل داشت كه روش خوبي براي انتقال كدهاي غير لاتين نبود، شايد نمونه‌هاي بهتري هم براي كار موجود باشه، من بيشتر براي اين همه Ù�ونتهاي Ù�ارسي نويس مريم رو ضميمه نكردم كه شايد اين رو به زودي تغيير بديم، اگر Ù�كر مي‌كنيد استاندارد مناسبي براي اين كار نداريم آيا داوطلب بين شما هست كه زØمت تبديل اين Ù�ونتها رو به نمونه‌هاي قابل استÙ�اده‌تر بكشه؟ راستي Ù�كر مي‌كنيد شركت توليد كننده Ù�ارسي ساز مريم چقدر بايد به ما بده تا از استانداردش استÙ�اده كنيم؟ :>
درباره همه قسمتهاي نوشته
[نظرتون رو بيان كنيد.]