Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Выделить одно слово в тексте (классическом) (http://www.flasher.ru/forum/showthread.php?t=207902)

ilmira 16.05.2014 00:16

Выделить одно слово в тексте (классическом)
 
Здравствуйте, дорогие форумчане!

Помогите пожалуйста, не могу выделить некоторые слова в тексте.

- Весь текст лежит в классическом тексте text1, а он связан с UIScrollbar.
- Текст прокручивается.

Мне нужно, чтобы некоторые слова в тексте были жирными, а если выделяю и нажимаю "ж", то весь текст становится жирным((

как можно решить эту проблему?

TWETTI 16.05.2014 00:33

Вложений: 2
Вот как это можно сделать:
Код AS3:

import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.text.TextField;
import flash.text.TextFormat;
 
tf_text.addEventListener(KeyboardEvent.KEY_UP, keyUp);
 
function keyUp(event:KeyboardEvent):void
{
        if (event.keyCode == Keyboard.B)
        {
                var tf:TextFormat = (tf_text as TextField).getTextFormat(tf_text.selectionBeginIndex, tf_text.selectionEndIndex);
                tf.bold = !tf.bold;
                tf_text.setTextFormat(tf, tf_text.selectionBeginIndex, tf_text.selectionEndIndex);
        }
}

По нажатию на кнопку "B" выделенный текст будет жирным.
Untitled-1.swf   (20.2 Кб)

ilmira 16.05.2014 17:37

Цитата:

Сообщение от TWETTI (Сообщение 1165916)
Вот как это можно сделать:
Код AS3:

import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.text.TextField;
import flash.text.TextFormat;
 
tf_text.addEventListener(KeyboardEvent.KEY_UP, keyUp);
 
function keyUp(event:KeyboardEvent):void
{
        if (event.keyCode == Keyboard.B)
        {
                var tf:TextFormat = (tf_text as TextField).getTextFormat(tf_text.selectionBeginIndex, tf_text.selectionEndIndex);
                tf.bold = !tf.bold;
                tf_text.setTextFormat(tf, tf_text.selectionBeginIndex, tf_text.selectionEndIndex);
        }
}

По нажатию на кнопку "B" выделенный текст будет жирным.
Untitled-1.swf   (20.2 Кб)

спасибо большое за отклик! а как можно сделать, чтобы некоторые слова уже при запуске были жирными, и оставались такими навсегда?

in4core 16.05.2014 18:30

Через форматирование html например

ilmira 16.05.2014 23:41

Цитата:

Сообщение от in4core (Сообщение 1165967)
Через форматирование html например

Это электронный учебник, на выходе будет файл swf или exe (win projector). С html-ом не связано(

Видимо придется вместо жирного шрифта сделать звездочки или еще что-то придумать.

Добавлено через 38 секунд
Flash cs5.5 actionscript 3.0 кстати

samana 17.05.2014 00:01

А вам обязательно делать с помощь кода? Если ваш текст не подгружается ни откуда (как мне подумалось), то можете во Flash CS сделать текстовое поле не динамическим, а статическим. Тогда можно вручную выделать слова и менять жирность, да и всё остальное тоже и шрифт, размер и прочее.
----------------------------
А нет, похоже UIScrollbar не работает со статическим текстом... Жаль.

in4core 17.05.2014 00:23

Цитата:

Это электронный учебник, на выходе будет файл swf или exe (win projector). С html-ом не связано(
textfield.htmlText - почитайте справку, там задаются <b> где угодно. Текст грузим хоть из XML хоть откуда и работаем с тегами

silin 17.05.2014 19:08

Код AS3:

package 
{
        import flash.display.*;
        import flash.text.*;
 
 
        public class Main extends Sprite
        {
 
                public function Main():void
                {
                        var tf:TextField = new TextField();
                        tf.autoSize = TextFieldAutoSize.LEFT;
                        tf.text = " как можно сделать, чтобы некоторые слова уже при запуске были жирными, и оставались такими навсегда";
                        var someWords:Array = ["сделать", "некоторые", "слова"];
                        for (var i:int = 0; i < someWords.length; i++)
                        {
                                var word:String = someWords[i];
                                var i1:int = tf.text.indexOf(word);
                                while (i1 > -1)
                                {
                                        var i2:int = i1 + word.length;
                                        var fmt:TextFormat = tf.getTextFormat(i1, i2);
                                        fmt.bold = true;
                                        fmt.color = 0xFF0000;
                                        tf.setTextFormat(fmt, i1, i2);
                                        i1 = tf.text.indexOf(word, i2);
                                }
 
                        }
 
                        addChild(tf);
                }
 
        }
 
}


ilmira 18.05.2014 13:29

Цитата:

Сообщение от silin (Сообщение 1166019)
Код AS3:

package 
{
        import flash.display.*;
        import flash.text.*;
 
 
        public class Main extends Sprite
        {
 
                public function Main():void
                {
                        var tf:TextField = new TextField();
                        tf.autoSize = TextFieldAutoSize.LEFT;
                        tf.text = " как можно сделать, чтобы некоторые слова уже при запуске были жирными, и оставались такими навсегда";
                        var someWords:Array = ["сделать", "некоторые", "слова"];
                        for (var i:int = 0; i < someWords.length; i++)
                        {
                                var word:String = someWords[i];
                                var i1:int = tf.text.indexOf(word);
                                while (i1 > -1)
                                {
                                        var i2:int = i1 + word.length;
                                        var fmt:TextFormat = tf.getTextFormat(i1, i2);
                                        fmt.bold = true;
                                        fmt.color = 0xFF0000;
                                        tf.setTextFormat(fmt, i1, i2);
                                        i1 = tf.text.indexOf(word, i2);
                                }
 
                        }
 
                        addChild(tf);
                }
 
        }
 
}


этот код можно вставить в окно "Действия"?

samana 18.05.2014 15:11

Цитата:

Сообщение от ilmira (Сообщение 1166046)
этот код можно вставить в окно "Действия"?

Нет, это просто один из вариантов. Всё же точнее будет сделать выделение слов вручную, как вам подсказали выше, через теги. То-есть вам нужно завести переменную с вашим текстом, выделить нужные слова тегами и назначить текст текстовому полю, например.
Код AS3:

//ваш текст с тегами <b>слово между этими тегами станет жирным</b>
var myText:String= "На <b>флешере.ру</b>, сидят довольно <b>добрые</b> и <b>отзывчивые</b> люди! Буду <b>заходить</b> сюда за советом <b>в любое время!</b>"
 
//ваше текстовое поле на сцене
tf.htmlText = myText;



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

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