Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Можно ли сделать поисковую систему текста во флэше? (http://www.flasher.ru/forum/showthread.php?t=86686)

KuzmaProduction 20.10.2006 17:36

Можно ли сделать поисковую систему текста во флэше?
 
Если это возможно могу ли я получить скрипт для примера?

FourSide 20.10.2006 17:42

Есть несколько методов класса String(), которые позволяют делать поиск подстроки в строке.
Напрример, String.IndexOf();

sngbiz 20.10.2006 17:56

Код:

class FindReplaceText
{
        public var strForFind:String;
        public var textFields:Array = [];
        public var fieldIndex:Number = 0;
       
        function FindReplaceText()
        {
        }
       
        public function setTargetFields(fields:Array):Void
        {
                textFields = fields;
        }
       
        public function findText(str:String):Void
        {
                if (str == "")
                        return;
               
                strForFind = str;                               
                var allText:String = textFields[fieldIndex].text.toLowerCase();
                var fStr:String =  str.toLowerCase();       
                var search_res:Number = allText.indexOf(fStr, Selection.getEndIndex());
                if (search_res != -1)
                {
                        strForFind = fStr;
                        Selection.setFocus(textFields[fieldIndex]);
                        Selection.setSelection(search_res, search_res + fStr.length);
                        onFindTextAt(textFields[fieldIndex]);
                }
                else
                {
                        if (beStrAtFields())
                        {
                                fieldIndex ++;
                                if (fieldIndex == textFields.length)
                                        fieldIndex = 0;
                                onChangeFieldAs(textFields[fieldIndex]);
                                findText(strForFind);
                        }
                        else
                                onNoSearchingStr();
                       
                }
        }
       
        public function replaceWith(strF:String, strR:String, all:Boolean):Void
        {
                if (textFields[fieldIndex].text.substring(Selection.getBeginIndex(), Selection.getEndIndex()) != strF)
                {
                        findText(strF, all);
                        return;
                }
                textFields[fieldIndex].replaceSel(strR);
                if (!beStrAtFields())
                        return;
                Selection.setSelection(Selection.getBeginIndex(), Selection.getBeginIndex() + strR.length);
                findText(strF, all);
        }
       
        public function replaceAll(findTxt:String, replaceTxt:String):Void
        {
                var rep:Number = 0;
                for (var i:Number = 0; i < textFields.length; i ++)
                {
                        onChangeFieldAs(textFields[i]);       
                        var allText:String = textFields[i].text.toLowerCase();
                        var fStr:String =  findTxt.toLowerCase();               
                        var search_res:Number = allText.indexOf(findTxt, 0);
                        while (search_res != -1)
                        {
                                rep ++;
                                Selection.setSelection(search_res, search_res + fStr.length);       
                                textFields[i].replaceSel(replaceTxt);                       
                                allText = textFields[i].text.toLowerCase();                       
                                var rr = search_res + replaceTxt.length;
                                search_res = allText.indexOf(findTxt, search_res + replaceTxt.length);
                        }
                }
                if (rep == 0)
                        onNoSearchingStr();
                else
                        onFindAndReplaced(rep);
        }
       
        public function beStrAtFields():Boolean
        {
                for (var i:Number = 0; i < textFields.length; i ++)
                {
                        var allText:String = textFields[i].text.toLowerCase();
                        var fStr:String =  strForFind.toLowerCase();               
                        var search_res:Number = allText.indexOf(fStr, 0);
                        if (search_res != -1)
                                return true;
                }
               
                return false;
        }
       
        public function onNoSearchingStr():Void
        {
        }
        public function onFindAndReplaced(n:Number):Void
        {               
        }       
        public function onChangeFieldAs(field:TextField):Void
        {
        }       
        public function onFindTextAt(field:TextField):Void
        {               
        }
}



Часовой пояс GMT +4, время: 22:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.