جعل النص قابل للتحديد أو التعديل
بالإضافه الى الإمكانيات القويه لل TLF وأدوات التنسيق الخاصه بها فإنك تستطيع أن تجعل المستخدم يتفاعل مع النص ، وذلك من خلال جعل النص قابل للتحديد فيستطيع المستخدم نسخ النص مثلا أو يمكن جعل النص قابل للتعديل فيستطيع المستخدم لصق أو مسح أو تعديل إو إضافة نص وذلك بإستخدام الفئات SelectionManager أو EditManager
خطوات جعل TLF قابل للتحديد
وذلك من خلال تخصيص الكائن SelectionManager الى خاصية interactionManager لكائن TextFlow
import flashx.textLayout.edit.SelectionManager;
mytextflow.interactionManager = new SelectionManager();
أمر Import يحتوى على الكود الازم لل SelectionManager الذى يجعل TextFlow قابل للتحديد. فيستطيع المستخدم حينئذ تحديد ونسخ النص النص ولكن لايمكن التعديل فيه .
ونستطيع أيضا التعامل مع العديد الوسائل methods للكائن SelectionManager التى تتعامل مع وظائف إضافيه لعمل وتفعيل التحديد
خطوات جعل TLF قابل للتعديل
وذلك من خلال تخصيص الكائن EditManager الى خاصية interactionManager لكائن TextFlow
import flashx.textLayout.edit. EditManager;
mytextflow.interactionManager = new EditManager();
أمر Import يحتوى على الكود الازم لل EditManager الذى يجعل TextFlow قابل للتعديل. فيستطيع المستخدم حينئذ تحديد ونسخ ولصق ومسح وإضافة النص .
ونستطيع أيضا التعامل مع العديد الوسائل methods للكائن EditManager التى تتعامل مع وظائف إضافيه لعمل وتفعيل التحديد
تحديد انه يتعامل مع النص أم لا Focus
فى بعض الأحيان يعتبر من المفيد أن نستطيع تحديد متى يتفاعل المستخدم مع النص على Stage ، فإنه من الممكن أن تريد أن تعرف متى نضع مؤشر الفاره فى النص لعمل فعل ما أو تريد أن تعرف متى نترك النص .
يمكنك أن تحدد متى يتم التركيز على النص من خلال ترقب حدث FocusEvent.FOCUS_IN حيث يكون هناك كائن واحد فقط يمكن التركيز عليه سواء كان نص أو زر أو أى كائن على stage .
وينتهى التركيز عندما يضغط المستخدم مفتاح Tab أو يحرك الماوس لكائن أخر ويمكن أن نحدد عندما ينهى المستخدم التركيز على كائن ما وذلم بترقب الحدث FocusEvent.FOCUS_OUT
مثال : بفرض وجود كائن نص TLF وهذا النص قابل للتعديل ونريد إذا ضغط المستخدم بالفاره داخل النص يكتب “انت بداخل النص” وإذا ضغط خارجها يكتب “ انت بخارج النص”
ملحوظه : يفضل رسم مستطيل حول كائن النص TLF حتى نعرف مكانه
import flash.events.FocusEvent; display.addEventListener(FocusEvent.FOCUS_IN,focusdetected); function focusdetected (myevent:FocusEvent):void { trace ("انت بداخل النص"); } display.addEventListener(FocusEvent.FOCUS_OUT,focusgone); function focusgone (myevent:FocusEvent):void { trace ("انت بخارج النص"); }
* نستخدم أمر Import اللازم
* نكتب إسم كائن TLF متبوعا بالوسيله ()addEventListener لترقب حدث FocusEvent.FOCUS_IN وعند حدوثه ينفذ الوظيفه focusdetected
* ننشئ الوظيفه focusdetected التى تستخدم أمر trace لعرض الرساله الموضحه
*
*
ثم نكرر نفس ماسبق ولكن مع حدث FocusEvent.FOCUS_OUT
معرفه ماتم تحديده (بداية ونهايه التحديد)
بالإضافه الى معرفة اذا كان تم التركيز على النص أم لا focus فإنه يمكنك أن تكون ذو إمكانيات أكثر بمعرفة معلومات حول المكان الذى حدده المستخدم فى النص .
الخطوات
* أوامر import لإستخدام SelectionManager أو EditManager
* ثم نستخدم الحدث SelectionEvent.SELECTION_CHANGE لتحديد عندما يقوم المستخدم بتحديد نص ما وعند حدوث هذا الحدث نستخدم selectionState.absoluteStart لتحديد بداية التحديد و selectionState.absoluteEnd لتحديد نهاية التحديد
import flashx.textLayout.edit.EditManager;
import flashx.textLayout.edit.SelectionState;
import flashx.textLayout.events.SelectionEvent; mytextflow.interactionManager =new EditManager(); mytextflow.addEventListener(SelectionEvent.SELECTION_CHANGE, selectionChangedd); function selectionChangedd(e:SelectionEvent):void
{ trace(e.selectionState.absoluteStart)//beginning position trace(e.selectionState.absoluteEnd)//ending position
}
بعض التوضيحات
SelectionEvent: حدث يتم إستدعائه فى كائن TextFlow عندما يقوم EditManager أو SelectionManager يتغيير مايتم تحديده من النص .
كمثال : هذا الحدث لا ينفذ فقط عند تحديد جزء من النص بل أيضا عند تغيير التحديد بسبب ضغط المستخدم فى مكان أخر فى النص بالإضافه أيضا الى عندما يتم تغيير تنسيقات نص
هناك تعليق واحد:
السلام عليكم
ارجوا من حضرتك ان تخبرنى لماذا لا يتم تنفيذ الكود الا بعد كتابة اثنين حرف c
right_btn.alpha = 0;
rong_btn.alpha = 0;
tlf.addEventListener(FocusEvent.FOCUS_IN,textInputHandler);
tlf.addEventListener(FocusEvent.FOCUS_OUT,textInputHandlerOut);
function textInputHandler(event:FocusEvent):void
{
//our textfield has focus, we want to listen for keyboard events.
stage.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler);
}
function textInputHandlerOut(event:FocusEvent):void
{
//our textfield lost focus, remove our listener.
stage.removeEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler);
}
function keyDownHandler( e:KeyboardEvent ):void
{
//a key was pressed, check if it was Enter => charCode 13.
if (tlf.text == "post")
{
//ok, enter was pressed. Do your thing.
right_btn.alpha = 1;
rong_btn.alpha = 0;
}
else
{
rong_btn.alpha = 1;
right_btn.alpha = 0;
}
}
إرسال تعليق