مشکل نمایش متون فارسی در کامپوننتهای فلش

شروع موضوع توسط dev_TRK ‏14 می 2012 در انجمن برنامه فلش Flash

  1. dev_TRK

    dev_TRK Member

    ارسال‌ها:
    72
    تشکر شده:
    12
    امتیاز دستاورد:
    6
    با سلام ینده توی پروژم از چندتا از کامپوننتهای فلش مثلا List DatagGrid Button استفاده کردم اما اینا مشکلی که دارن اینه که متون فارسی رو خوب نمایش نمیدن ایا همچین مشکلی رو میشه برطرف کرد ؟؟
     
    نوشته شده توسط dev_TRK در ‏14 می 2012
  2. travon

    travon Member

    ارسال‌ها:
    105
    تشکر شده:
    50
    امتیاز دستاورد:
    16
    منظورتون اینه که متون فارسی رو با فاصله مینویسه؟
     
    نوشته شده توسط travon در ‏14 می 2012
  3. dev_TRK

    dev_TRK Member

    ارسال‌ها:
    72
    تشکر شده:
    12
    امتیاز دستاورد:
    6
    نه دوس عزیز اگه دقت کنین تو این نمونه که قرار دادم متوجه مشکلی که میگم میشین
     

    پیوست ها:

    نوشته شده توسط dev_TRK در ‏14 می 2012
  4. travon

    travon Member

    ارسال‌ها:
    105
    تشکر شده:
    50
    امتیاز دستاورد:
    16
    فهمیدم مشکلت چیه
    لطفا فایل fla رو بده تا درستش کنم
     
    نوشته شده توسط travon در ‏14 می 2012
  5. dev_TRK

    dev_TRK Member

    ارسال‌ها:
    72
    تشکر شده:
    12
    امتیاز دستاورد:
    6
    فایل Fla خاصی نداره همون کامپوننتهای خود فلشه که من ازشون استفاده کردم اگه منظورتون استفاده از کلاسهای فارسی نویسه من نمیخوام از اونا استفاده بشه دلیلش هم سادس چون تو بعضی از کامپوننتها کاربردی نداره این کلاسها مثلا تو کامپوننتهای TextInput و textArea .
     
    نوشته شده توسط dev_TRK در ‏14 می 2012
  6. travon

    travon Member

    ارسال‌ها:
    105
    تشکر شده:
    50
    امتیاز دستاورد:
    16
    پس این فایل رو با چی ساختین؟
     
    نوشته شده توسط travon در ‏14 می 2012
  7. dev_TRK

    dev_TRK Member

    ارسال‌ها:
    72
    تشکر شده:
    12
    امتیاز دستاورد:
    6
    دوست عزیز این چه سوالیه ؟!!
    شما نرم افزار Flash Professional دارین دیگه درسته ؟؟ تو حالت AS3 Document یه فایل ایجاد کنین و از پنل کامپوننت ، کاموننتهای List Datagrid Button Textinput TextArea رو بندازین تو استیج این مشکل تو همه نسخه های فلش هست ، من فایل رو واسه تست درست کردم بعد پاکش کردم رفت نکته خاصی نداره خود فایل مهم اون مشکلی هست که تو معماری ساخت این کامپوننتها هست منظوره منه.
     
    نوشته شده توسط dev_TRK در ‏14 می 2012
  8. akherat

    akherat مدیر انجمن

    ارسال‌ها:
    594
    تشکر شده:
    661
    امتیاز دستاورد:
    93
    دوست عزیز
    اگر مشکلت با list و datagrid و button هست
    با farsiStyle و embed e font میشه درستش کرد
    و اگر مشکلت با textInput و textArea هست باید
    به فلش بیلدر سویچ کنی و یا خودت با TE بنویسی
     
    نوشته شده توسط akherat در ‏14 می 2012
    dev_TRK از این پست تشکر کرده است.
  9. dev_TRK

    dev_TRK Member

    ارسال‌ها:
    72
    تشکر شده:
    12
    امتیاز دستاورد:
    6
    سواله من اینه که چرا این مشکل در کنترلرهای Flash Builder نیست و تو کنترلرهای Flash وجود داره نمیشه این مشکل رو تو Flash هم حل کرد؟؟
     
    نوشته شده توسط dev_TRK در ‏14 می 2012
  10. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    چرا نمیشه دوست عزیز دلیلش سادس تو فلش بیلدر به صورت پیش فرض در معماری کامپوننتها از FTE یا همون Flash text Engine استفاده میشه که مختص کنترلهای Spark هست اما تو فلش در طراحی کامپوننتها از Classic text استفاده شده با توجه به این که ادوبی سورس کاموننتها رو کنار فلش گذاشته میتونین این کامپوننتها رو بنا به نیازتون شخصی سازی کنید( که این سورسها تو این مسیر هست ) :

    HTML:
     Common \ Configuration \ Component Source \ ActionScript 3.0 \ User Interface
     
    اگه نتونستید با این راهنمایی مشکل رو حل کنید واستون یه سپل میزارم!

    در ضمن یه پیشنهادی واسه دوستانی که جواب میدن دارم و اونم اینه که رویه قبلی انجمن رو ادامه بدن و در زمینه ای که اطلاعات ندارن سعی نکنن جواب بدن که این بنده خداهایی که سوال میپرسن مشکلشون بیشتر نشه.
     
    نوشته شده توسط arjmand200 در ‏15 می 2012
    pouryadesign و dev_TRK از این پست تشکر کرده اند.
  11. dev_TRK

    dev_TRK Member

    ارسال‌ها:
    72
    تشکر شده:
    12
    امتیاز دستاورد:
    6


    مرسی اقای ارجمند از راهنمایتون ، اگه امکان داره یه سمپل بزارین ، من دقیقا نمیدونم چی رو باید تغییر بدم.
    مرسی.
     
    نوشته شده توسط dev_TRK در ‏15 می 2012
  12. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    دوست عزیز همونطور که گفتم تو معماری طراحی کاموننتهای فلش از class text استفاده شده یعنی قابلیتهای متون فارسی در اون وجود نداره برای اینکه این قابلیت رو به این کامپوننتها اضافه کنیم باید از FTE یا TLF استفاده کنیم. من واستون شخصی سازی دو کنترلر List و TextInput رو میگم بقیش هم شبیه اینه و میتونید بقیه کامپوننتها رو هم مطابق با نیازتون اصلاح کنید و در نهایت یه نمونه میزارم .
    خوب بریم سراغ TextInput :
    برای اینکه ابتدا بتونیم این کنترلرها رو ویرایش کنیم باید سورشون رو کنار پروزه بزاریم (توصیه اینکه سورس اصلی رو دستکاری نکنید ) برای اینکار میریم به این مسیر :

    HTML:
    \Adobe\Adobe Flash CS5.5\Common\Configuration\Component Source\ActionScript 3.0\User Interface
    و فولدر fl رو کنار پروژه میزاریم حالا کنترلر TextInput رو برمیداریم اگه از تو کتابخانه بر روی این کنترلر راست کلیک کنید و edit class رو بزنید سورس این کامپوننت باز میشه. در اینجا اگه دقت کنید برای ساخت این کامپوننت از کلاسهای کلاسیک تکست استفاده شده

    PHP:

    import flash.text.TextField;
        import flash.text.TextFieldType;
        import flash.text.TextFormat;
        import flash.text.TextLineMetrics;
    حالا واسه اینکه این کنترلر رو اصلاح کنیم فقط کافیه textField تو این کلاس رو به TLFTextField تبدیل کنیم.
    (داخل پرانتز هم بگم که TLFtextfiled همون tlf خودمونه که که متدها و متغیرهاش شبیه Classic TextFiled هست با این تفاوت که همه قابلیتهای tlf رو داره) حالا برای اصلاح این کامپوننت کافیه این 2 خط رو تغییر بدیم


    PHP:
    public var textField:TLFTextField;


    override protected function configUI():void {
                ....
                textField = new TLFTextField();
                ...
    }
    کار تقریبا تموم شده اما یه مشکل کوچیک هست اون اینه که direction تبدیل به rtl نمیشه تو این حالت واست این کار هم کافیه این متغیر رو زمانی که کنترلر فرمت دهی میشه ست کنیم یعنی تو این تابع :


    PHP:

    protected function drawTextFormat():void {
                ...
                textField.direction = 'rtl'
                ...
    }
     
    کار تموم شد الان کنترلر کاملا از TLF پشتیبانی میکنه

    اما کنترلر List ، برای اینکه این کنترلر رو اصلاح کنیم به طور مستقیم نمیشه این کار رو انجام داد دلیلش هم اینه که این کنتلر جزوه کنترلرهای ListBase هست مثل Datagrid Combobox , و غیره یعنی اینا از یک کلاس واسه نمایش همه چی استفاده میکنن که اسمش CellRenderer هست یعنی ایتمهایی که اضافه میشه هر کدوم به عنوان یک سلول محسوب شده و یه حالتی شبیه به کنترلر Button دارن ، در کلاس Cellrenderer همونطور که گفته شده هر ایتم به عنوان یک LabelButton شناخته میشه که اساس هر کنترلر ListBase رو تشکیل میدن حالا کافیه که برای اصلاح کنترلر List کلاس LabelButton رو اصلاح میکنیم برای این کار هم کافیه همون کارهارو که تو کلاس TextInput انجام دادیم تو این کلاس هم انجام بدیم یعنی TextField رو به TLFTextField تبدیل کنیم به این صورت :

    PHP:

    public class LabelButton extends BaseButton implements IFocusManagerComponent {

           
            public var textField:TLFTextField;
            ....
       
     

    PHP:

    override protected function configUI():void {
            ...
            textField = new TLFTextField();
            ...
     

    واسه حالت RTL هم کافیه این خط رو اضافه کنیم :

    PHP:

    protected function drawTextFormat():void {
                ...
                textField.direction = 'rtl';

    تموم شد اینم از کنترلر List که برای نمایش متون از TLF استفاده میکنه

    اما تو کنترلهای دیگه هم روال همینه با اصلاح LabelButton خوبخود کنترلهایی که از این کلاس استفاده میکنن هم اصلاح میشن مثل DataGrid , ComboBox یه سمپل هم گذاشتم تا خروجی رو مشاهده کنید

    این نکته رو بگم خودم این روش رو توصیه نمیکنم چون به اندازه کافی خود این کنترلرها سنگین هست و اگه TLF رو هم بهشون اضافه کنید دیگه پرفرمانس پروژتون خیلی میاد پایین.
    در اخر یه فریمورک واستون معرفی میکنم که همون کنترلهای فلش رو ارائه میده اما بازدهی کار پایین نمیاد طوری که حتی تو پروژهایی که واسه موبایل میزنین هم میتونین ازش استفاده کنید.

     

    پیوست ها:

    نوشته شده توسط arjmand200 در ‏16 می 2012
    Mohammad_Shams، myfirst، amator_flash و 3 نفر دیگر از این ارسال تشکر کرده اند.
  13. dev_TRK

    dev_TRK Member

    ارسال‌ها:
    72
    تشکر شده:
    12
    امتیاز دستاورد:
    6
    مرسی اقای ارجمند از توضیحات کاملتون واقعا ممنونم/:rose:
     
    نوشته شده توسط dev_TRK در ‏16 می 2012
    amator_flash از این پست تشکر کرده است.
  14. meysam.rabie

    meysam.rabie New Member

    ارسال‌ها:
    1
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    دوست عزیز این فایل پیوستی که گذاشتین رو نمیشه دانلود کرد با اینکه وارد حسابم شدم ولی دوباره پیغام میده که دوباره وارد شو!!
    لطفا کمک کنید.
    در ضمن اگر ممکن آموزش پست 12 رو برای cs6 بذارید چون به نظر متفاوت بود.
     
    آخرین ویرایش: ‏11 جولای 2012
    نوشته شده توسط meysam.rabie در ‏11 جولای 2012

به اشتراک بگذارید