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

سلام دوباره
این سمپل وقتی که کلمه رو داریم وارد می کنیم کلمه ها رو قبل از آن پیشنهاد می کنه.
اگر کسی هم تونست کاری کنه که به جای classic text از tlf استفاده کنه , بزاره واسه دانلود ، اخه من هر کاری کردم که Tlf بشه نتونستم.
 

پیوست ها

  • 1.zip
    620.9 کیلوبایت · بازدیدها: 71

myfirst

Member
[PHPS]
import fl.data.DataProvider;
import fl.controls.TextInput;
import fl.controls.dataGridClasses.HeaderRenderer;
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.text.TLFTextField;
import flash.text.TextFieldType;
import fl.controls.List;
import flash.geom.Rectangle;
import flashx.textLayout.formats.Direction;
import fl.events.ListEvent;
flashx.textLayout.formats.Direction;


var dp:DataProvider = new DataProvider();
dp.addItem({label:"مهدي", price:"احمدي"});
dp.addItem({label:"حسين", price:"محمدي"});


var enl:Enliven = new Enliven();
var fmt2:TextFormat = new TextFormat();
fmt2.font = enl.fontName;
fmt2.size = "11";
fmt2.color = "0x000000";
fmt2.align = TextFormatAlign.RIGHT;






var _search:TLFTextField = new TLFTextField();
_search.width = 400;
_search.type = TextFieldType.INPUT;
_search.border = true;
_search.direction = Direction.RTL;
_search.setTextFormat(fmt2);
_search.text = "ها";
addChild(_search);
_search.addEventListener(Event.CHANGE, changeHandler);


var rect:Rectangle;


var lst:List = new List();
lst.dataProvider = dp;
lst.addEventListener(ListEvent.ITEM_DOUBLE_CLICK , PlaceText);


lst.setRendererStyle("textFormat", fmt2);
addChild(lst);


var str:String;
function ReturnRect():Rectangle
{
return _search.getCharBoundaries(_search.caretIndex);


}
rect = ReturnRect();
lst.move(rect.bottomRight.x-lst.width , rect.bottomRight.y);
//-------------------------------
function changeHandler(e:Event)
{


var ar:Array = dp.toArray();
str = _search.text;
if (str.lastIndexOf(" ") != -1)
{
str = str.slice(str.lastIndexOf(" ") + 1,str.length);
}
trace(str);
var ar2 = ar.filter(filter);
lst.dataProvider = new DataProvider(ar2);
//dg.rowCount = dg.dataProvider.length;


}
function filter(obj:Object, idx:int, arr:Array):Boolean
{
var searchTerm:String = str;
var Str:String = obj.label;
if (Str.search(searchTerm) >= 0)
{
trace("---------------");
lst.visible = true;
return true;
}
return false;
}
function changeText(e:String):String
{
var myPattern:RegExp = /ی/gi;
return e.replace(myPattern, "ي");
}


function PlaceText(e:ListEvent)
{


var word:String = e.target.getItemAt(e.rowIndex).label;
_search.replaceSelectedText(word);


_search.setTextFormat(fmt2);
lst.visible = false;
lst.dataProvider = dp;
}


[/PHPS]
 
آخرین ویرایش:

myfirst

Member
سلام. من تستش کردم. جواب داد!! فقط یه خورده ریزه کاری داره که باید زحمتشو خودت بکشی. اگه شما برنامه رو اجرا کنی به محض زدن space کلمات به شما پیشنهاد میشن. البته دوباره تاکیید میکنم که کامل نیست. من فقط روش کار رو تو اون سمپل قرار دادم.

/ی/gi;
یک Regular Expression هست که برای پیدا کردن کاراکتر "ی" فارسی و جایگزین کردنش با "ي" عربی استفاده میشه. کامپوننت های فلش (چه as2 چه as3) با کاراکتر "ی" فارسی مشکل دارن. بخاطر همین این کاراکتر رو با "ي" عربی جایگزین کردم که مشکل حل شه.

 
الان ساعت 4:18 صبحه ،این اخرین کدی هست که درست کردم.خیلی کارم به این فایل گیره.
الان 3 تا مشکل دارم.
1.وقتی که جهت بالا و پایین رو می زنی ،می تونی از لیست انتخاب کنی ، اما چکار کنم که اینتر زده میشه آیتم مورد نظر انتخاب بشه.
2. وقتی که آیتم رو انتخاب می کنی ،فوکس از روی تکس برداشته می شه که باید با موس کلبک کنیم رو تکس تا دوباره بتونیم بنویسیم .
3 . چرا وقتی لیست رو visible رو false می کنیم با یه لیست خالی هست؟
[PHPS]import fl.data.DataProvider;import fl.controls.TextInput;
import fl.controls.dataGridClasses.HeaderRenderer;
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.text.TLFTextField;
import flash.text.TextFieldType;
import fl.controls.List;
import flash.geom.Rectangle;
import flashx.textLayout.formats.Direction;
import fl.events.ListEvent;
flashx.textLayout.formats.Direction;


var dp:DataProvider = new DataProvider();
dp.addItem({label:"لللل", price:"للل"});
dp.addItem({label:"مهدي", price:"مهدي"});
dp.addItem({label:"حسين", price:"حسين"});
dp.addItem({label:"لللل", price:"للل"});
dp.addItem({label:"مهدي", price:"مهدي"});
dp.addItem({label:"حسين", price:"حسين"});


var fmt2:TextFormat = new TextFormat();
fmt2.size = "11";
fmt2.color = "0x000000";
fmt2.align = TextFormatAlign.RIGHT;


var _search:TLFTextField = new TLFTextField();
_search.width = 400;
_search.type = TextFieldType.INPUT;
_search.border = true;
_search.direction = Direction.RTL;
_search.setTextFormat(fmt2);
addChild(_search);




_search.addEventListener(Event.CHANGE, changeHandler);
_search.addEventListener(KeyboardEvent.KEY_DOWN, onKeyBoardDown);




var rect:Rectangle;
var codeHint:List = new List();
var str:String;


//-------------------------------
addd();
function addd(){


codeHint.dataProvider = dp;
codeHint.sortItemsOn("label");
codeHint.addEventListener(ListEvent.ITEM_CLICK , PlaceText);
codeHint.addEventListener(Event.CHANGE, showData);


function showData(event:Event) {
lll.text = event.target.selectedItem.label;
}


codeHint.setRendererStyle("textFormat", fmt2);
addChild(codeHint);
codeHint.visible = false;
}


function ReturnRect():Rectangle
{
return _search.getCharBoundaries(_search.caretIndex);

}
//-------------------------------
function rex(){
rect = ReturnRect();
trace(rect)
codeHint.move(rect.bottomRight.x-codeHint.width , rect.bottomRight.y);
}
//-------------------------------
function changeHandler(e:Event)
{
var ar:Array = dp.toArray();
str = _search.text;
if (str.lastIndexOf(" ") != -1)
{
str = str.slice(str.lastIndexOf(" ") + 1,str.length);
}
trace(str);
var ar2 = ar.filter(filter);
codeHint.dataProvider = new DataProvider(ar2);
}
//-------------------------------
function filter(obj:Object, idx:int, arr:Array):Boolean
{
var searchTerm:String = str;
var Str:String = obj.label;
if (Str.search(searchTerm) >= 0)
{
trace("---------------")
codeHint.visible = true;
rex();
return true;
}
return false;
}
//-------------------------------
function PlaceText(e:ListEvent)
{
var word:String = e.target.getItemAt(e.rowIndex ).label;
word = word.split(str).join(""); // جدا سازی
_search.replaceSelectedText(word);


_search.setTextFormat(fmt2);
codeHint.visible = false;
}
//-------------------------------
function onKeyBoardDown(e:KeyboardEvent):void
{
switch (e.keyCode)
{
case Keyboard.DOWN :
codeHint.selectedIndex++;
codeHint.scrollToSelected();
break;

case Keyboard.UP :
codeHint.selectedIndex--;
codeHint.scrollToSelected();
break;


case Keyboard.ENTER :

break;
}
}


[/PHPS]
 

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

بالا