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

dev_TRK

Member
با سلام ینده توی پروژم از چندتا از کامپوننتهای فلش مثلا List DatagGrid Button استفاده کردم اما اینا مشکلی که دارن اینه که متون فارسی رو خوب نمایش نمیدن ایا همچین مشکلی رو میشه برطرف کرد ؟؟
 

dev_TRK

Member
نه دوس عزیز اگه دقت کنین تو این نمونه که قرار دادم متوجه مشکلی که میگم میشین
 

پیوست ها

  • as3 componenet problem with rtl text.zip
    38.2 کیلوبایت · بازدیدها: 28

dev_TRK

Member
فایل Fla خاصی نداره همون کامپوننتهای خود فلشه که من ازشون استفاده کردم اگه منظورتون استفاده از کلاسهای فارسی نویسه من نمیخوام از اونا استفاده بشه دلیلش هم سادس چون تو بعضی از کامپوننتها کاربردی نداره این کلاسها مثلا تو کامپوننتهای TextInput و textArea .
 

dev_TRK

Member
دوست عزیز این چه سوالیه ؟!!
شما نرم افزار Flash Professional دارین دیگه درسته ؟؟ تو حالت AS3 Document یه فایل ایجاد کنین و از پنل کامپوننت ، کاموننتهای List Datagrid Button Textinput TextArea رو بندازین تو استیج این مشکل تو همه نسخه های فلش هست ، من فایل رو واسه تست درست کردم بعد پاکش کردم رفت نکته خاصی نداره خود فایل مهم اون مشکلی هست که تو معماری ساخت این کامپوننتها هست منظوره منه.
 

akherat

مدیر انجمن
دوست عزیز
اگر مشکلت با list و datagrid و button هست
با farsiStyle و embed e font میشه درستش کرد
و اگر مشکلت با textInput و textArea هست باید
به فلش بیلدر سویچ کنی و یا خودت با TE بنویسی
 

dev_TRK

Member
سواله من اینه که چرا این مشکل در کنترلرهای Flash Builder نیست و تو کنترلرهای Flash وجود داره نمیشه این مشکل رو تو Flash هم حل کرد؟؟
 

arjmand200

Member
سواله من اینه که چرا این مشکل در کنترلرهای Flash Builder نیست و تو کنترلرهای Flash وجود داره نمیشه این مشکل رو تو Flash هم حل کرد؟؟

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

HTML:
 Common \ Configuration \ Component Source \ ActionScript 3.0 \ User Interface

اگه نتونستید با این راهنمایی مشکل رو حل کنید واستون یه سپل میزارم!

در ضمن یه پیشنهادی واسه دوستانی که جواب میدن دارم و اونم اینه که رویه قبلی انجمن رو ادامه بدن و در زمینه ای که اطلاعات ندارن سعی نکنن جواب بدن که این بنده خداهایی که سوال میپرسن مشکلشون بیشتر نشه.
 

dev_TRK

Member
چرا نمیشه دوست عزیز دلیلش سادس تو فلش بیلدر به صورت پیش فرض در معماری کامپوننتها از fte یا همون flash text engine استفاده میشه که مختص کنترلهای spark هست اما تو فلش در طراحی کامپوننتها از classic text استفاده شده با توجه به این که ادوبی سورس کاموننتها رو کنار فلش گذاشته میتونین این کامپوننتها رو بنا به نیازتون شخصی سازی کنید( که این سورسها تو این مسیر هست ) :

HTML:
 common \ configuration \ component source \ actionscript 3.0 \ user interface

اگه نتونستید با این راهنمایی مشکل رو حل کنید واستون یه سپل میزارم!

در ضمن یه پیشنهادی واسه دوستانی که جواب میدن دارم و اونم اینه که رویه قبلی انجمن رو ادامه بدن و در زمینه ای که اطلاعات ندارن سعی نکنن جواب بدن که این بنده خداهایی که سوال میپرسن مشکلشون بیشتر نشه.



مرسی اقای ارجمند از راهنمایتون ، اگه امکان داره یه سمپل بزارین ، من دقیقا نمیدونم چی رو باید تغییر بدم.
مرسی.
 

arjmand200

Member
دوست عزیز همونطور که گفتم تو معماری طراحی کاموننتهای فلش از 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 رو هم بهشون اضافه کنید دیگه پرفرمانس پروژتون خیلی میاد پایین.
در اخر یه فریمورک واستون معرفی میکنم که همون کنترلهای فلش رو ارائه میده اما بازدهی کار پایین نمیاد طوری که حتی تو پروژهایی که واسه موبایل میزنین هم میتونین ازش استفاده کنید.

 

پیوست ها

  • rtl component.zip
    1.2 مگایابت · بازدیدها: 67

meysam.rabie

New Member
دوست عزیز این فایل پیوستی که گذاشتین رو نمیشه دانلود کرد با اینکه وارد حسابم شدم ولی دوباره پیغام میده که دوباره وارد شو!!
لطفا کمک کنید.
در ضمن اگر ممکن آموزش پست 12 رو برای cs6 بذارید چون به نظر متفاوت بود.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا